【问题标题】:Flutter Splash Screen颤振启动画面
【发布时间】:2018-09-15 01:53:55
【问题描述】:

如何在颤动中显示启动画面?所以有一个启动图标的选项。我在各自的文件夹中添加了 ios 和 android 的图像。我的问题是太快了。所以它直接打开MyApp()。我希望我的应用程序不显示任何内容并让启动控制,直到我确定将用户带到哪个屏幕(在 MyApp 中我想进行初始化)

【问题讨论】:

标签: dart flutter splash-screen


【解决方案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,试试这个答案stackoverflow.com/a/60101934/6686446
猜你喜欢
  • 2021-02-24
  • 1970-01-01
  • 2019-01-15
  • 2021-05-18
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多