我正在构建一个带有初始屏幕的简单订购应用程序,但我无法使该应用程序不返回初始屏幕,我已经尝试过有条件的操作员来解决问题,但是它没有解决问题什么,还有其他替代方法可以实现吗?
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;
}
}
答案 0 :(得分:0)
您可以使用Navigator.pushReplacement
。再次删除您的条件:
...
home: SplashScreen()));
唯一的其他更改是将Navigator.push
替换为pushReplacement
:
... => Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => Menu()),
)
这将从导航器堆栈中删除SplashScreen
路由,因此再也不会返回它。
答案 1 :(得分:0)
https://pub.dartlang.org中有一个名为SplashScreen
的有用插件,将为您提供此功能以及其他功能,例如启动计时器,这是链接: