第四百四十一回 再谈flutter_native_splash包

2024-04-10 06:12

本文主要是介绍第四百四十一回 再谈flutter_native_splash包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 知识回顾
  • 2. 使用方法
  • 3. 示例代码
  • 4. 经验与总结
    • 4.1 经验分享
    • 4.2 内容总结

我们在上一章回中介绍了"overlay_tooltip简介"相关的内容,本章回中将 再谈flutter_native_splash包.闲话休提,让我们一起Talk Flutter吧。

1. 知识回顾

我们在第四百一十一回介绍了flutter_native_splash包的概念和用法,该包主要用来实现App的程序启动页面。不过我们当时运行后并没有实现启动页面,经过仔细分析后我可以使用这个包实现splash页面,本章回中将继续介绍它的用法,同时分享相关的使用技巧和经验。

2. 使用方法

首先创建一个新的yaml文件,文件名必须是flutter_native_splash.yaml;

  • 在文件中配置相关信息,这些信息主要用来控制splash页面的颜色和图片等内容;
  • 运行命令:flutter_native_splash:create,生成splash页面需要的图片和相关资源文件;
  • 在main文件中添加代码,主要用来初始化包,并且启动splash页面;
  • 在主页面中停止splash页面,然后会自动显示程序的主页面;

关于上面的步骤还有一些细节需要说明:

  • 上面的步骤中也可以不创建yaml配置文件,而是直接在pubspec.yaml文件中配置,不过要顶格,不能向加入插件一样有空格。我们推荐单独建立一个文件去配置splash;
  • 在代码中需要注意的是一定要移除splash页面,如果不移除splash,就不会进入主页面,导致程序一起卡着不动。
  • 运行命令生成图片和资源文件时必须在系统的终端中运行命令,IDE中无法识别dart命令。会报无法识别dart命令的错误;
  • 运行命令时先切换到项目根目录下,不需要在create后面加path/flutter_native_splash.yaml(官方文档中介绍命令时需要添加路径)命令可以自动识别该文件,前提是flutter_native_splash.yaml文件位于项目根目录下。否则会报错误:Could not find file flutter_native_splash:create
  • 如果不想使用该插件了,可以把命令中的create替换成remove:flutter_native_splash:remove来删除该插件生成的关于splash的文件;
  • 运行命令后会在Android的drawble目录下生成background.png文件,同时在其它drawble-xxxdpi目录下生成splash.png和android12splash.png文件。
  • 运行命令时也修改了launch_background.xml文件,修改内容就是修改背景图片和splash图片的名字。我感觉把背景从颜色修改成图片不太好.为此还修改了styl.xml中的内容。IOS平台下会修改info.plst和Runner/Asset目录下的LaunchImage图片。web等其它平台也会生成相应的文件,不过可以配置成false.这样就不生成了。

此外,上面的步骤完成后可以在Android平台的程序上运行,在IOS平台上运行时需要把base.lproj拖入已经打开的xCode项目中,然后在弹窗中选择复制,这样就会复制一份启动项目的stroyboard到项目中。这个在官方文档中有详细介绍,我就不再介绍了。

我总结为:先在yaml文件中的配置splash相关信息,然后通过命令生成不同分辨率下的splash图片,接着修改配置文件(launch_background.xml)中的内容应用于splash功能。最后是在代码中导入该功能,同时控制splash的启动时长。

下面是运行命令时的结果,请大家参考,该结果与配置有关,配置不同生成产物不同:

your_pach% dart run flutter_native_splash:create
Building package executable... 
Built flutter_native_splash:create.
[Android] Creating default splash images
[Android] Creating default android12splash images
[Android] Creating dark mode android12splash images
[Android] Updating launch background(s) with splash image path...
[Android]  - android/app/src/main/res/drawable/launch_background.xml
[Android]  - android/app/src/main/res/drawable-v21/launch_background.xml
[Android] Updating styles...
[Android]  - android/app/src/main/res/values-v31/styles.xml
[Android] No android/app/src/main/res/values-v31/styles.xml found in your Android project
[Android] Creating android/app/src/main/res/values-v31/styles.xml and adding it to your Android project
[Android]  - android/app/src/main/res/values-night-v31/styles.xml
[Android] No android/app/src/main/res/values-night-v31/styles.xml found in your Android project
[Android] Creating android/app/src/main/res/values-night-v31/styles.xml and adding it to your Android project
[Android]  - android/app/src/main/res/values/styles.xml
[Android]  - android/app/src/main/res/values-night/styles.xml
[iOS] Creating  images
[iOS] Updating ios/Runner/Info.plist for status bar hidden/visible
[Web] Creating images
[Web] Creating images
[Web] Creating background images
[Web] Creating CSS
[Web] Updating index.html
╔════════════════════════════════════════════════════════════════════════════╗
║                       NEED A GREAT FLUTTER DEVELOPER?                      ║
╠════════════════════════════════════════════════════════════════════════════╣
║                                                                            ║
║   I am available!  Find me at https://www.linkedin.com/in/hansonjon/       ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝✅ Native splash complete.
Now go finish building something awesome! 💪 You rock! 🤘🤩
Like the package? Please give it a 👍 here: https://pub.dev/packages/flutter_native_splash

3. 示例代码

下面是程序的示例代码,与上一小节中的实现步骤完全匹配,请大家参考:

///yaml文件中的配置信息,可以参考官方文档color: "#42a5f5"#图片格式必须是pngimage: images/avata.png/// 在main文件中添加代码,主要用来初始化包,并且启动splash页面;WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);runApp(const MyApp());
///  在MaterialApp的home属性对应的页面中移除splash页面void initState() {super.initState();///可以在这里添加一些延时在主程序页面中移除splash,不然无法显示页面FlutterNativeSplash.remove();}

编译并且运行上面的程序可以看到splash页面。我在这里就不演示程序的运行结果了,建议大家自己去实践。

4. 经验与总结

4.1 经验分享

这个插件看着简单,不过在使用时还有些细节,比如我上次就没有运行成功,反复分析后才运行成功,接下来我们分享一些使用过程总结的经验,详细如下:

  • 配置文件中内容需要专门对Android12适配,不然高于此版本的系统不会产生splash效果;
  • 官方关于配置文件的内容写的比较详细,有些参数无法理解的话可以参考github的介绍,它配有图形,或者看Android官方文档中关于splash的介绍也可以;
  • 使用命令生成图片时需要在电脑的终端运行命令,而且可以通过命令的运行结果查看生成的图片和xml等配置文件;
  • 如果手机上没有效果,试试单独启动app,而不是通过IDE直接运行app。我上次没有运行成功就是这个原因;

4.2 内容总结

使用这个插件实现splash页面可以总结为三个步骤:填写配置信息 -> 生成图片等资源 -> 代码中使用splash资源。

如果不使用插件的话,我们需要分平台修改配置信息,Andrid是在xml文件中,iOS是在Runner中。同时还需要UI设计师提供不同分辨率下的图片。这个插件与自己实现splash功能时的差别在于不需要分不同平台去配置splash信息,而且只需要一张图片就可以。通过包中的命令可以生成多个平台上的splash文件,对于每个平台可以自动适配不同的分辨率,比如android会在
drawable-xxxdpi等5个目录下生成对应的splash文件。IOS会生成1x,2x和3x格式的图片。整体来说该包实现了跨平台的功能,效率高一些。

看官们,与"再谈flutter_native_splash包"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

这篇关于第四百四十一回 再谈flutter_native_splash包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/890257

相关文章

Flutter ListView详解

文章示例代码 ListView常用构造 ListView 我们可以直接使用ListView 它的实现也是直接返回最简单的列表结构,粗糙没有修饰。 ListView 默认构建 效果 ///默认构建 Widget listViewDefault(List list) { List _list = new List(); for (int i = 0; i < list.length;

Flutter原理—深入Widget原理

事实上在 Flutter 中渲染是经历了从 Widget 到 Element 再到 RenderObject 的过程。 Widget 只是 Element 的一个配置描述 ,告诉 Element 这个实例如何去渲染。 Widget 和 Element 之间是一对多的关系 。实际上渲染树是由 Element 实例的节点构成的树,而作为配置文件的 Widget 可能被复用到树的多个部分,对应产

搭建大型分布式服务(四十)SpringBoot 整合多个kafka数据源-支持生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目,每天处理上亿级的数据的精简小插件,快速上手。 <dependency><groupId>io.github.vipjoey</groupId><artifactId>multi-kafka-starter</ar

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized

1,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized 都不可以,因为abstract申明的方法是要求子类去实现的,abstract只是告诉你有这样一个接口,你要去实现,至于你的具体实现可以是native和synchronized,也可以不是,抽象方法是不关心这些事的,所以写这两个是没有意义的。然后,static方法是不会被覆

Flutter笔记(一)- 安装和配置Flutter

一、下载Flutter 访问网址:https://docs.flutter.dev/get-started/install?hl=zh-cn 根据电脑所使用的操作系统的平台进行选择。笔者电脑的操作系统为Windows,因此选择如图1-1的Windows图片: 图1-1 Flutter网站(一) 然后根据跳转的页面,选择图1-2的Android。 图1-2 Flutter网站(二) 确定安

2024.06.23【读书笔记】丨生物信息学与功能基因组学(第十七章 人类基因组 第四部分)【AI测试版】

第四部分:人类基因组的伦理、法律和社会问题(ELSI) 摘要: 本部分探讨了人类基因组计划所引发的伦理、法律和社会问题(ELSI),这些问题涉及基因信息的所有权、隐私权、基因歧视以及基因技术在社会中的运用等方面。 学习目标: 理解人类基因组计划实施过程中所引发的ELSI问题。掌握基因信息的伦理学考量,包括隐私保护和数据共享。学习基因技术在医疗、法律和社会层面的应用及其带来的挑战。 正文

【Flutter 专题】112 图解自定义 ACEPieWidget 饼状图 (一)

类别选项球;切割绘制饼状图;饼状图中绘制文字; 1. 类别选项球 对于两侧不同颜色类别选项卡,仅需要简单设置一下 Container 的 decoration 装饰器即可,只是方便用户查看饼状图分类而已; return Container( height: 45, width: 45, margin: EdgeInsets.symmetric(vertical: 2.5, horizonta

Flutter 如何发布安卓应用?

android:hardwareAccelerated=“true” android:windowSoftInputMode=“adjustResize”> <meta-data android:name=“flutterEmbedding” android:value=“2” /> Flutter生成的文件建议是大部分内容可以保留不动,但是可以根据需要进行修改。 具体可能要修改的内容如

Flutter开发环境搭建和调试

[你的Flutter文件夹路径]\flutter\bin 这样我们的Flutter SDK的环境变量就配置完毕了。接下来在命令提示符窗口中输入命令: flutter doctor 它可以帮助我们检查Flutter环境变量是否设置成功,Android SDK是否下载以及配置好环境变量等等。如果有相关的错误提示,根据提示进行修复和安装、设置即可。每次运行这个命令,都会帮你检查是否缺失了必要的依赖

Xamarin.iOS使用Objective-C静态类库.a(Linking Native Libraries)

Xamarin静态类库的binding实际上是一个C#与Objective-C方法间映射过程,由于第三方SDK对iOS开发至关重要,因此官方文档中也对这块也做了完整的介绍(Binding Objective-C Libraries),但对于一个完全入门级的程序员来说,这块还是有诸多麻烦,并且部分Api类型文档上也未曾提到。下面将以百度地图作为案例,全面解析静态类库binding工程的知识与问题