Dart 使用不同初始路径的颤振
我有一个移动应用程序,我想用共享的首选项保存页面。但这不是问题所在。 在我的主应用程序中,我想将initialRoute属性设置为退出后查看的最新页面。但它只是返回主路线“/”。 代码如下:Dart 使用不同初始路径的颤振,dart,flutter,Dart,Flutter,我有一个移动应用程序,我想用共享的首选项保存页面。但这不是问题所在。 在我的主应用程序中,我想将initialRoute属性设置为退出后查看的最新页面。但它只是返回主路线“/”。 代码如下: class _MainAppState extends State<MainApp> { var _currentRoute; _getCurrentRoute() async { SharedPreferences preferences = await SharedPrefe
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(),
},
);
}
class\u MainAppState扩展状态{
var_电流路径;
_getCurrentRoute()异步{
SharedReferences首选项=等待SharedReferences.getInstance();
设置状态(){
_currentRoute=preferences.getString('LastScreenRoute');
如果(_currentRoute==null){
_currentRoute='/';
preferences.setString('LastScreenRoute',_currentRoute);
}
});
print(_currentRoute);//这里的结果为true,它是当前页面
}
@凌驾
initState(){
super.initState();
_getCurrentRoute();
print(_currenRoute);//但这里是空的!
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
initialRoute:_currentRoute,
路线:{
“/”:(上下文)=>FirstPage(),
“/RegisterScreen”:(上下文)=>Register(),
“/LoginScreen”:(上下文)=>Login(),
“/HomeScreen”:(上下文)=>HomePage(),
},
);
}
\u getCurrentRoute()
是异步的,所以不会立即完成。这就是为什么\u currentRoute
在注释行中仍然为空;\u getCurrentRoute()
还没有完成,所以没有设置\u currentRoute
在制作MaterialApp
之前,您需要等待它设置好,例如:
@override
Widget build(BuildContext context) {
return (_currentRoute == null) ? Container() : MaterialApp(
print(\u currenRoute);initState()
中的可以在\u getCurrentRoute()
之前调用。使getCurrentRoute()
方法返回一个路由,并打印该路由,而不是全局变量\u currentRoute
。打印不是问题。我想使用我在\u getCurrentRoute()中得到的\u currentRoute()在initialRoute属性中。但是initialRoute前面的_currentRoute为null,并且它一直自动变为“/”。非常感谢。我不知道这一点。