我正在开发一个应用程序,当用户进入第一个屏幕时是一个加载屏幕,在该屏幕上可以从提供程序初始化某些内容,用户无法在此屏幕中输入任何内容,加载完成后,我想推送一个新屏幕,而无需用户“点击”它。
在这段代码中,我实际上为_login.getStoredEmail()运行并设置了3秒的延迟,并在LoginController内设置了一个变量,该变量将在下一个屏幕中使用,但是每次都无法正常工作,最终会中断。
class GeneralSplashScreen extends StatefulWidget {
@override
_GeneralSplashScreenState createState() => _GeneralSplashScreenState();
}
class _GeneralSplashScreenState extends State<GeneralSplashScreen> {
@override
void initState() {
Future.delayed(
Duration(
seconds: 3,
),
() {
Navigator.pushReplacementNamed(context, kRoutes.login);
},
);
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
final LoginController _login = Provider.of<LoginController>(context);
_login.getStoredEmail();
return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Image.asset(
'lib/assets/images/logo.png',
fit: BoxFit.contain,
),
Text(
"Business Mananger",
textAlign: TextAlign.end,
style: TextStyle(
fontFamily: kFontFamily.montserrat,
fontSize: 10,
),
),
LoadingBar(),
],
),
),
);
}
}
最佳答案
导航到initState()方法内的其他屏幕。
initState() {
initializeAndNavigate()
}
initializeAndNavigate() async {
await initializeSomething();
Navigator.of(context) ...
}
关于flutter - 异步功能完成后如何推送到页面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63301909/