如何阻止我的应用返回初始屏幕

时间:2019-02-14 14:09:18

标签: dart flutter

我正在构建一个带有初始屏幕的简单订购应用程序,但我无法使该应用程序不返回初始屏幕,我已经尝试过有条件的操作员来解决问题,但是它没有解决问题什么,还有其他替代方法可以实现吗?

import "package:flutter/material.dart";
import 'package:propapp/tabs/main.dart';
import 'dart:async';

bool loaded = false;

void main() => runApp(new MaterialApp(
    theme: ThemeData(
      primaryColor: Colors.amber,
      accentColor: Colors.amberAccent,
    ),
    debugShowCheckedModeBanner: false,
    home: loaded == true ? Menu() : SplashScreen()));

class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() => new _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
  @override
  void initState() {
    super.initState();

    new Future.delayed(
        const Duration(seconds: 3),
        () => Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => Menu()),
            ));
    loaded = true;
      }


}

2 个答案:

答案 0 :(得分:0)

您可以使用Navigator.pushReplacement。再次删除您的条件:

...
home: SplashScreen()));

唯一的其他更改是将Navigator.push替换为pushReplacement

... => Navigator.pushReplacement(
              context,
              MaterialPageRoute(builder: (context) => Menu()),
            )

这将从导航器堆栈中删除SplashScreen路由,因此再也不会返回它。

答案 1 :(得分:0)

https://pub.dartlang.org中有一个名为SplashScreen的有用插件,将为您提供此功能以及其他功能,例如启动计时器,这是链接:

https://pub.dartlang.org/packages/splashscreen