颤振启动画面
Posted
技术标签:
【中文标题】颤振启动画面【英文标题】:Flutter Splash Screen 【发布时间】:2018-09-15 01:53:55 【问题描述】:如何在颤动中显示启动画面?所以有一个启动图标的选项。我在各自的文件夹中添加了 ios 和 android 的图像。我的问题是太快了。所以它直接打开MyApp()。我希望我的应用程序不显示任何内容并让启动控制,直到我确定将用户带到哪个屏幕(在 MyApp 中我想进行初始化)
【问题讨论】:
请检查这个答案以及***.com/a/48101776/2863386 【参考方案1】:您可以在initState
中使用Future.delayed
构造函数。这将使您的 SplashScreen 在导航发生之前保持您指定的持续时间。
class SplashScreen extends StatefulWidget
@override
_SplashScreenState createState() => new _SplashScreenState();
class _SplashScreenState extends State<SplashScreen>
@override
void initState ()
super.initState();
// TODO initial state stuff
new Future.delayed(const Duration(seconds: 4));
@override
Widget build(BuildContext context)
//build
【讨论】:
我通常将它与Future.wait
结合起来等待加载必要的资产
我刚试了一下,还是不行,只要调用runApp
,飞溅就结束了,afaik Future.delayed
相当于Timer
。
这真的取决于你如何连接你的小部件
@VikasPandey,你放的地方,这段代码中的导航方法【参考方案2】:
对 aziza 回答的小更新
import 'dart:async';
import 'package:flutter/material.dart';
import 'src/login_screen.dart';
void main()
runApp(new MaterialApp(
home: new MyApp(),
));
class MyApp extends StatefulWidget
@override
_MyAppState createState() => new _MyAppState();
class _MyAppState extends State<MyApp>
@override
void initState()
super.initState();
new Future.delayed(
const Duration(seconds: 3),
() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginScreen()),
));
@override
Widget build(BuildContext context)
return new Scaffold(
backgroundColor: Colors.white,
body: Container(
child: new Column(children: <Widget>[
Divider(
height: 240.0,
color: Colors.white,
),
new Image.asset(
'assets/logo.png',
fit: BoxFit.cover,
repeat: ImageRepeat.noRepeat,
width: 170.0,
),
Divider(
height: 105.2,
color: Colors.white,
),
]),
),
);
希望这对其他人也有帮助:)
【讨论】:
如果我需要从 sharedpreference 中获取登录状态,如果为 true 则返回 home,如果 false 则登录,如何处理? @Nbn,试试这个答案***.com/a/60101934/6686446以上是关于颤振启动画面的主要内容,如果未能解决你的问题,请参考以下文章
可以在 android 和 ios 的颤振应用程序上删除启动画面
我的启动画面结束得太早了。如何在 Android 上手动隐藏启动画面?