我正在开发一个应用程序,当用户进入第一个屏幕时,它是一个加载屏幕,其中从提供程序初始化某些内容,用户无法在此屏幕中输入任何内容,当加载完成时,我想推送一个新屏幕,而无需用户“点击”它。
在这段代码中,我实际上为 _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(),
],
),
),
);
}
}