我有一个移动应用程序,想要保存带有shared_preferences的页面。但这不是问题。 在我的主应用程序中,我想将initialRoute属性设置为退出后查看的最新页面。但是它只是返回主路径“ /”。 这是代码:
class _MainAppState extends State<MainApp> {
var _currentRoute;
_getCurrentRoute() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
_currentRoute = preferences.getString('LastScreenRoute');
if (_currentRoute == null) {
_currentRoute = '/';
preferences.setString('LastScreenRoute', _currentRoute);
}
});
print(_currentRoute); // result here is true and It's the current page
}
@override
initState() {
super.initState();
_getCurrentRoute();
print(_currenRoute); // but here It's null!
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
initialRoute: _currentRoute,
routes: {
'/': (context) => FirstPage(),
'/RegisterScreen': (context) => Register(),
'/LoginScreen': (context) => Login(),
'/HomeScreen': (context) => HomePage(),
},
);
}
答案 0 :(得分:1)
simplify((sym(sqrt(2)) + 4 * sym(sqrt(3)))/(3*sym(sqrt(2)) - sqrt(3)))
是_getCurrentRoute()
,因此不会立即完成。这就是为什么async
在注释行中仍然为null的原因; _currentRoute
尚未完成,因此尚未设置_getCurrentRoute()
。
在制作_currentRoute
之前,您需要等待它设置好,例如:
MaterialApp