【Flutter】Flutter 使用splashscreen包创建启动页面

news2024/11/28 8:35:55

文章目录

    • 一、 前言
    • 二、 什么是启动页面和 splashscreen
    • 三、 如何安装和使用 splashscreen
    • 四、 详细的代码示例:使用 splashscreen 创建启动页面
    • 五、 总结

一、 前言

大家好,今天我们要聊一聊如何在 Flutter 中使用 splashscreen 包来创建一个漂亮的启动页面。启动页面在许多应用中都是非常重要的一部分,它能够给用户留下深刻的第一印象,并且可以在应用加载数据或者进行初始化操作的时候为用户提供一个视觉效果。

如果你想深入学习 Flutter,掌握更多的技巧和最佳实践,我有一个好消息要告诉你:我们有一个全面的 Flutter专栏->Flutter Developer 101 入门小册 等待着你。在那里,你将获得完整的、系统的 Flutter 学习资料,包括详细的代码示例和深入的概念解析。更重要的是,我们的专栏正在不断更新和完善,而价格也会随着内容的丰富而逐渐上调。所以,现在加入,你将以最优惠的价格获得所有的内容。现在,让我们开始今天的学习吧!

二、 什么是启动页面和 splashscreen

首先,我们来了解一下什么是启动页面。启动页面,也被称为闪屏页面,是一个应用启动后最先显示的页面,通常用于展示应用的 logo 或者其他形式的品牌标识。

splashscreen 则是一个我们在 Flutter 中用来创建启动页面的包,它为我们提供了很多有用的功能,例如可以在加载数据的时候显示一个动画,或者在数据加载完毕后自动跳转到主页面等。

三、 如何安装和使用 splashscreen

要在 Flutter 中使用 splashscreen,首先我们需要在项目的 pubspec.yaml 文件中添加它的依赖,就像这样:

dependencies:
  flutter:
    sdk: flutter

  splashscreen: ^1.3.5

然后,我们可以在代码中使用 SplashScreen 这个 widget 来创建我们的启动页面。下面是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:splashscreen/splashscreen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SplashScreen(
        seconds: 3,
        navigateAfterSeconds: AfterSplash(),
        title: Text(
          '欢迎来到我的应用!',
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 20.0,
          ),
        ),
        image: Image.asset('images/logo.png'),
        backgroundColor: Colors.white,
        photoSize: 50.0,
      ),
    );
  }
}

class AfterSplash extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('主页'),
      ),
      body: Center(
        child: Text('你好,世界!'),
      ),
    );
  }
}

这段代码会创建一个显示 3 秒钟的启动页面,然后跳转到主页面。启动页面上显示的文字是 “欢迎来到我的应用!”,并且还有一个我们从 ‘images/logo.png’ 加载的图片。

以上就是一个简单的使用 splash

screen 的示例。

四、 详细的代码示例:使用 splashscreen 创建启动页面

接下来,我们将在一个新的 Flutter 项目中创建一个具有实际业务逻辑的启动页面。我们的启动页面将会在加载数据的同时显示一个动画,数据加载完成后,页面将自动跳转到主页面。

首先,我们创建一个新的 Flutter 项目,然后在 pubspec.yaml 文件中添加 splashscreen 的依赖:

dependencies:
  flutter:
    sdk: flutter

  splashscreen: ^1.3.5

然后,我们在 main.dart 文件中编写以下代码:

import 'package:flutter/material.dart';
import 'package:splashscreen/splashscreen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MySplashScreen(),
    );
  }
}

class MySplashScreen extends StatefulWidget {
  
  _MySplashScreenState createState() => _MySplashScreenState();
}

class _MySplashScreenState extends State<MySplashScreen> {
  
  Widget build(BuildContext context) {
    return SplashScreen(
      seconds: 3,
      navigateAfterSeconds: AfterSplash(),
      title: Text(
        '正在加载数据,请稍候...',
        style: TextStyle(
          fontWeight: FontWeight.bold,
          fontSize: 20.0,
        ),
      ),
      image: Image.asset('images/loading.gif'),
      backgroundColor: Colors.white,
      photoSize: 50.0,
      loaderColor: Colors.blue,
    );
  }
}

class AfterSplash extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('主页'),
      ),
      body: Center(
        child: Text('欢迎来到主页!'),
      ),
    );
  }
}

这段代码首先定义了一个 MySplashScreen 类,它是一个 StatefulWidget,在它的 build 方法中,我们使用 SplashScreen widget 来创建启动页面。我们设置了显示的文字为 “正在加载数据,请稍候…”,并使用一个 GIF 图片作为加载动画。然后我们定义了 AfterSplash 类,它是启动页面数据加载完成后跳转的页面。

在实际的业务逻辑中,你可能需要从网络或本地数据库加载数据。你可以在 SplashScreennavigateAfterFuture 属性中使用一个 Future 来实现这个功能。以下是一个例子:

SplashScreen(
  navigateAfterFuture: loadData(),
  // ... 其他属性
)

Future<void> loadData() async {
  // 这里是加载数据的逻辑
  // 例如从网络或本地数据库加载数据
  // 使用 Future.delayed 来模拟加载数据
  await Future.delayed(Duration(seconds: 3));
}

五、 总结

在本文中,我们介绍了如何在 Flutter 中使用 splashscreen 包来创建启动页面。我们首先介绍了启动页面和 splashscreen 的概念,然后通过一个简单的示例演示了如何使用 splashscreen,最后我们在一个新的 Flutter 项目中创建了一个具有实际业务逻辑的启动页面。

如果你对 Flutter 感兴趣,想要更深入地学习,那么我要推荐你一个很棒的资源:我们的 Flutter专栏->Flutter Developer 101 入门小册。在那里,你将获得完整的、系统的 Flutter 学习资料,包括详细的代码示例和深入的概念解析。比如,你知道如何使用 Flutter 构建一个完整的应用吗?在我们的专栏中,你将找到答案。更重要的是,我们的专栏正在不断更新和完善,而价格也会随着内容的丰富而逐渐上调。所以,现在加入,你将以最优惠的价格获得所有的内容。让我们一起在 Flutter 的世界中继续探索吧!如果你想了解更多,可以先阅读我们的 一站式解决你的需求,Flutter Developer 101 入门小册 专栏指引

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

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

相关文章

使用Fiddler模拟网络

Fiddler已经预置提供了模拟Modem速度的选项&#xff0c;其位置位于&#xff1a; Rules->Performances->Simulate Modem Speeds 果你想学习Fiddler抓包工具&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的Fiddler抓包工具教程&#x…

【道友避坑】yolov5视频抽帧构建数据集

写在前面&#xff1a;本篇博客记录了yolov5视频抽帧构建数据集的全过程。 目录 一、 视频材料准备 二、数据集构建 三、运行数据集 一、 视频材料准备 1. 在yolov5-master下创建mydata目录&#xff0c;然后创建video目录和images目录、labels目录 2. 下载一个一两分钟的视频…

数据安全保护:DataSecurity Plus助您防止数据泄露

导言&#xff1a; 在数字化时代&#xff0c;数据安全已成为企业和个人必须高度关注的重要议题。数据泄露可能导致重大损失&#xff0c;包括财务损失、声誉受损以及违反法规的风险。为了帮助组织有效地防止数据泄露&#xff0c;DataSecurity Plus是一款强大的解决方案&#xff…

Android PopupWindow+RecyclerView 实现二级联动筛选

前言 这篇文章主要的功能是利用 PopupWindow 和 RecyclerView 实现条件筛选包括二级联动筛选&#xff0c;主要是仿小红书里的筛选功能而写的一个 Demo 效果如下&#xff0c;代码通俗易懂&#xff0c;保姆级教程 一、使用步骤 1.引入库 api com.github.CymChad:BaseRecycler…

smart Java——BIO、NIO、AIO的工作流程和代码实现

文章目录 〇、前置知识1.套接字2.线程池 一、BIO1.工作流程2.代码实现3.缺点 二、NIO&#xff08;基于轮训&#xff09;1.相比于BIO的优化2.工作流程3.代码实现 三、AIO&#xff08;基于订阅-通知&#xff09;1.工作流程2.代码实现 参考 〇、前置知识 1.套接字 在计算机网络编…

回溯算法之广度优先遍历

目录 迷宫问题 N叉树的层序遍历 腐烂的橘子 单词接龙 最小基因变化 打开转盘锁 迷宫问题 假设有一个迷宫&#xff0c;里面有障碍物&#xff0c;迷宫用二维矩阵表示&#xff0c;标记为0的地方表示可以通过&#xff0c;标记为1的地方表示障碍物&#xff0c;不能通过。现在给一…

【机器人3】图像雅可比矩阵原理与推导

图像雅可比矩阵原理与推导 理想情况下&#xff0c;图像像素坐标系和图像物理坐标系无倾斜&#xff0c;则二者坐标转换关系如下&#xff0c;且两边求导&#xff1a; [ u v 1 ] [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] (1) \begin{bmatrix}u\\v\\1\end{bmatrix}\begin{b…

C语言-变量

1 内存的分区 1、内存&#xff1a;物理内存、虚拟内存 物理内存&#xff1a;实实在在存在的存储设备 虚拟内存&#xff1a;操作系统虚拟出来的内存。 操作系统会在物理内存和虚拟内存之间做映射。 在32位系统下&#xff0c;每个进程的寻址范围是4G,0x00 00 00 00 ~0xff ff …

和想要通过学习 Python 转行的同学聊一聊

在开始之前我想说&#xff0c;关于这类话题&#xff0c;永远会存在分歧和争论。比如有人看好互联网发展&#xff0c;有人说泡沫太大&#xff1b;有人说要做项目&#xff0c;有人说得多刷题&#xff1b;有人说要去培训班&#xff0c;有人说不如自学&#xff1b;有人说你学 Pytho…

【MySql】基本查询

文章目录 插入操作insert查询操作selectselect查询where条件判断order by排序limit筛选分页结果 更新操作update删除操作delete插入查询结果 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 先创建提供一张表&am…

给大家分享一份适合练手的软件测试实战项目

我们都知道软件测试是一个理论性强的分支。 正是这种特点&#xff0c;决定了在学习的过程中不单单是看或者去背相应的知识点&#xff0c;而是真真切切的基于这些理论基础知识&#xff0c;结合实战项目进行演练。这也就是所谓的眼过千遍不如手过一遍。而且大家也都能看到&#…

13. 100ASK-V853-PRO开发板 摄像头测试指南

100ASK-V853-PRO开发板 摄像头测试指南 硬件要求&#xff1a; 100ASK-V853-PRO开发板GC2053摄像头 软件要求&#xff1a; 固件下载地址&#xff1a;链接&#xff1a;百度网盘 提取码&#xff1a;sp6a 固件位于资料光盘中的10_测试镜像/3.测试摄像头/v853_linux_100ask_uart0…

119.【Uniapp】

uni-app (一)、uni-app 起步1.Uniapp简介2.Uniapp开发工具(1).下载HbuilderX(2).安装scss/sass编译(3).快捷键方案切换(4).修改编辑器的基本设置 3.新建 uni-app项目4.uniapp 的目录结构5.把项目运行到微信开发者工具中(1).填写自己的微信小程序的AppID:(2).在HBuilderX中&…

java循环语句

文章目录 for循环while循环do-while循环嵌套循环关键字break和continue的使用break带标签的使用 for循环 语法格式&#xff1a; for (①初始化部分; ②循环条件部分; ④迭代部分)&#xff5b;③循环体部分; &#xff5d;说明&#xff1a; for(;;)中的两个&#xff1b;不能多…

视觉SLAM十四讲——ch7实践(视觉里程计1)

视觉SLAM十四讲----ch7的实践操作及避坑 1. 实践操作前的准备工作2. 实践过程2.1 特征提取与匹配2.2 对极几何2.3 三角测量2.4 求解PnP2.5 求解ICP 3. 遇到的问题3.1 准备工作遇到的问题 1. 实践操作前的准备工作 在终端中进入ch7文件夹下&#xff0c;顺序执行以下命令进行编译…

Sentinel的限流和Gateway的限流差别?

Sentinel的限流与Gateway的限流有什么差别&#xff1f; 问题说明&#xff1a;考察对限流算法的掌握情况 限流算法常见的有三种实现&#xff1a;滑动时间窗口&#xff0c;令牌桶算法&#xff0c;漏桶算法。gateway则采用基于Redis实现的令牌桶算法。但是我们不会去用&#xff…

PCB做了盲埋孔,还有必要再做盘中孔工艺吗

一博高速先生成员--王辉东 初夏的西湖美艳无边&#xff0c;若不去看看人生总觉遗憾。 杭州两大美女明明和琪琪约好这个星期天&#xff0c;一起去西湖转转&#xff0c;到灵隐寺许个愿&#xff0c;再到北高峰爬个山。 话说两人正行之间&#xff0c;看到正对面也有两个美女结伴同…

Spring Security Oauth2.1 最新版 1.1.0 整合 gateway 完成授权认证(基于 springboot 3.1)

目录 背景 版本 Spring Boot 3.1 Spring Authorization Server 1.1.0官方文档 基础 spring security OAuth2.0 模块构成 授权方式 集成过程 官方demo 代码集成 依赖 授权服务AuthorizationServerConfig配置 重要组件 测试 查看授权服务配置 访问授权服务 授…

渗透测试与自动化安全测试工具比较

应用程序安全性并不新鲜&#xff0c;但它在需求、复杂性和深度方面正迅速增长。随着网络犯罪自疫情爆发以来增长了近600%&#xff0c;越来越多的SaaS企业开始争相保护他们的应用程序。即使那些运行最新端点保护的系统也面临重大漏洞。 然而随之而来的一个问题是&#xff1a;即…

【javaweb+springboot】旅游网页面设计(主购物车功能)——前后端分离+服务端客户端增删改查(完整代码+文档)

一、项目背景 由于疫情原因&#xff0c;张家界旅游业受到很大的影响&#xff0c;为了促进旅游业的发展&#xff0c;吸引更多游客来到张家界旅游&#xff0c;帮助游客更好地了解张家界&#xff0c;创建张家界旅游网&#xff0c;推进旅游发展大会的开展&#xff0c;展示当地风土人…