第四百二十五回

文章目录

  • 1. 概念介绍
  • 2. 实现方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"使用intl插件时遇到的问题"相关的内容,本章回中将介绍实现splash页面的另外一种方法.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的splash页面就是程序启动时显示的页面,我们在一百四十一回介绍过它的实现方法,不过我们介绍的是官方提供的方法,我们将在本章回中介绍
另外一种实现方法:通过flutter_native_splash插件实现splash页面。

2. 实现方法

我们首先在yaml配置文件中添加包,并且通过pub get命令把包获取到项目中来,不过添加时对版本要求比较麻烦,经常会和其它包有冲突,下面是一个错误示例:

Because every version of flutter_test from sdk depends on path 1.8.3 and flutter_native_splash >=2.3.12 depends on path ^1.9.0, flutter_test from sdk is incompatible with flutter_native_splash >=2.3.12.
So, because fluttercookbook depends on both flutter_native_splash ^2.4.0 and flutter_test from sdk, version solving failed.

我的解决方法是尝试降低包的版本,多尝试几个版本就可以。添加完包后就可以使用了,下面是详细的使用方法,请大家参考:

  • 创建一个新的yaml文件,文件名必须是flutter_native_splash.yaml;
  • 在文件中配置相关信息,这些信息主要用来控制splash页面的颜色和图片等内容;
  • 在main文件中添加代码,主要用来初始化包,并且启动splash页面;
  • 在主页面中停止splash页面,然后会自动显示程序的主页面;
    上面的示步骤中也可以不创建yaml配置文件,而是直接在pubspec.yaml文件中配置,不过要顶格,不能向加入插件一样有空格。需要注意的是一定要移除splash页面,
    如果不移除splash,就不会进入主页面,导致程序一起卡着不动。
    此外,上面的步骤完成后可以在Android平台的程序上运行,在IOS平台上运行时需要把base.lproj拖入已经打开的xCode项目中,然后经弹窗中选择复制,这样就会
    复制一份启动项目的stroyboard到项目中。这个在官方文档中有详细介绍,我就不再介绍了。不过这个方法有待改进,因为程序编译都无法通过。

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页面,不过程序启动时有延时,也就是说该功能起作用了,但是没有显示splash页面。总之我在
Android和iOS两个平台上都没有成功实现splash页面。我觉得可能是哪个地方没有设置好,但是和官方给的操作说明完全一致,还有一种可能就是flutter版本的的
问题,因为我在安装该插件时就发现了版本不兼容的问题。此外,从技术上来看,该插件修改了iOS工程下的storyboar文件,只是修改有错误,但是Android目录下控
制splash页面的xml文件没有任何的修改。所以我觉得这是splash页面没有生效的根本原因。

4. 内容总结

我们在本章回中介绍了如何通过flutter_native_splash插件实现splash页面。主要介绍了实现的步骤,并且给出了示例代码,不过比较遗憾在是没有真正在程序中
实现splash页面。没有实现的原因可能与我当前的flutter版本有关,大家也可以在评论区发表自己的意见。鉴于无法使用这个插件的原因,我们还是推荐使用官方提供
的方法来实现splash页面,具体的内容我们在开篇时介绍过,大家可以参考。
看官们,与"实现splash页面的另外一种方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9改进策略:卷积魔改 | SPD-Conv,低分辨率图像和小物体涨点明显

💡💡💡本文改进内容:SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,特别是在处理低分辨率图像和小物体等更困难的任务时。 💡💡💡SPD-Conv在多个数据集验证能够暴力涨点&#x…

Java基础入门day20

day20 思考 父类中含有一个无参的test方法,子类含有一个带参的test方法 问题:子类中的带参test方法与父类的无参test方法之间是什么关系? package com.saas; ​ public class Father { ​public void test(){System.out.println("this …

python项目练习——2.天气预报应用程序

项目功能讲解: 这个项目可以让用户输入城市名称,然后返回该城市当前的天气情况,比如温度、湿度、风速等。这个项目涉及到从网络获取数据,解析 JSON 格式的响应以及处理用户输入等技术。 下面是代码示例: import requ…

网工内推 | 松下电器,解决方案工程师,最高25K,IE认证优先

01 松下电器 招聘岗位:基盘解决方案架构师 职责描述: 1、网络的规划设计,架构实施和故障排渣以及调优 2、负责网络设备的选型、搭建、系统监控、故障解决、性能优化 3、负责对集团内相关业务,进行提案或项目管理相关工作 4、对…

Linux制作yum离线源,解决安装RPM包时循环依赖。

在生产环境中,有时服务器是不能访问互联网的,当遇到某些软件安装,会碰到缺少各种依赖包的问题,因此使用制作yum源的方式来安装软件非常方便。 主要原理是,通过 yum 下载所有RPM包,上传RPM包到服务器后安装…

Vue3新手教程

Vue3新手教程 一. Vue3简介1. 性能的提升2.源码的升级3. 拥抱TypeScript4. 新的特性 二. 创建Vue3工程1. 基于 vue-cli 创建2. 基于 vite 创建(推荐)3. 一个简单的效果 三. Vue3核心语法1. OptionsAPI 与 CompositionAPI2. 拉开序幕的 setup2.1 setup 概述2.2 setup 的返回值2.…

typeScript6(其他类型)

1、void void表示没有任何类型,和其他类型是平等关系,不能直接赋值。我们只能为它赋值null或undefined(在strictNullChecks未指定为true时)。一般只有在函数没有返回值时去声明。 2、never never类型表示的是那些永不存在的值的…

自动化脚本-Excel批量生成二维码

演示: Excel二维码批量生成 exe资源文件: 下载exe 代码实现: pip install openpyxl openpyxl 是一个用于读写 Excel 文件的 Python 库 pip install qrcode qrcode 是一个 Python 库,可以用来生成二维码(Quick Resp…

小目标检测篇 | YOLOv8改进之GSConv + Slim Neck提升小目标检测效果

前言:Hello大家好,我是小哥谈。在文章中,作者提出了一种新方法GSConv来减轻模型的复杂度并保持准确性。GSConv可以更好地平衡模型的准确性和速度。并且,提供了一种设计范式Slim Neck,以实现检测器更高的计算成本效益。实验过程中,与原始网络相比,改进方法获得了最优秀的…

【MySQL】锁

一、并发事务访问相同记录的三种情况 读-读情况   并发事务相继读取相同的记录,不会产生什么问题。 写-写情况   这种情况下会发生脏写的问题。 读-写或写-读情况   会发生脏读、不可重复读、幻读的情况 并发问题的解决方案 读操作利用多版本并发控制&am…

论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM

论文链接:https://arxiv.org/pdf/2309.14348.pdf Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM Abstract1 Introduction2 Related Works3 Our Proposed Method3.1 Threat Model3.2 Our Proposed Method3.3 Practical Designs3.4 Theoret…

docker centos7在线安装mysql8.x

目录 1. 安装mysql8.x2.配置开机启动3.修改root密码和配置远程访问 1. 安装mysql8.x # 安装MySQL cd /usr/local/mysql # 下载rpm安装包 wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm yum -y localinstall mysql80-community-release-el7-3.noarc…

java的ArrayList类

ArrayList<E>E是自定义数据类型 ArrayList类&#xff1a; 构造函数&#xff1a; 成员方法&#xff1a; public boolean add(E e)&#xff1a; 将指定元素加到集合末尾 Appends the specified element to the end of this list. public class Array {public static…

动听的洗牌游戏(Java篇ArrayList实操)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

LeetCode - 存在重复元素

219. 存在重复元素 II 这道题可以用两个方法解决。 哈希表 从左到右遍历数组&#xff0c;并将数组的下标存到hash中&#xff0c;在遍历数字的过程中&#xff0c;如果hash中不存在nums[i]&#xff0c;将nums[i]加入到hash当中&#xff0c;若存在&#xff0c;则判断下标之间的关…

深入理解Elasticsearch高效原理

在当今数据驱动的世界中&#xff0c;能够快速有效地存储、搜索和分析庞大数据集变得至关重要。Elasticsearch是一个强大的开源搜索和分析引擎&#xff0c;专为云计算中心而设计&#xff0c;能够提供快速的搜索功能&#xff0c;并且能够扩展到包含数百个服务器的集群&#xff0c…

Java面试题:请解释Java中的继承和多态?

一、请解释Java中的继承和多态&#xff1f; Java中的继承&#xff08;Inheritance&#xff09;和多态&#xff08;Polymorphism&#xff09;是面向对象编程&#xff08;OOP&#xff09;的两大基本特性&#xff0c;它们允许开发者创建灵活、可扩展的代码。 继承 继承是一种允许…

C#事件实例详解

一、什么是事件&#xff1f; 在C#中,事件(event)是一种特殊的类成员,它允许类或对象通知其他类或对象发生了某些事情。 从语法上看,事件的声明类似于字段,但它们在功能和行为上有一些重要的区别。 从技术角度来说,事件实际上是一个封装了事件订阅和取消订阅功能的委托字段。…

Python中的数据类型有四类八种如何理解?

在Python中&#xff0c;数据类型大致可以分为四大类&#xff0c;包含了八种基本的数据类型&#xff0c;这些分类有助于理解和使用Python进行编程。这四大类分别是&#xff1a; 数字类型 (Numeric Types): 整型 (int): 表示没有小数部分的整数&#xff0c;可以是正数、负数或零。…

ORACLE 知识整理

目录 一. 插入指定数量的数据二. 索引2.1 创建索引2.2 删除索引 三. 查询计划四. Oracle SQLPlus常用设置五. 增加删除字段 一. 插入指定数量的数据 ⏹当需要向表中插入若干测试数据的时候&#xff0c;可通过下面这种方式造数据 先从DUAL虚拟表中检索后造出10000条数据后&…