使用不同的initialRoute颤振

时间:2018-12-18 16:36:43

标签: dart flutter

我有一个移动应用程序,想要保存带有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(),
    },
  );
}

1 个答案:

答案 0 :(得分:1)

simplify((sym(sqrt(2)) + 4 * sym(sqrt(3)))/(3*sym(sqrt(2)) - sqrt(3)))_getCurrentRoute(),因此不会立即完成。这就是为什么async在注释行中仍然为null的原因; _currentRoute尚未完成,因此尚未设置_getCurrentRoute()

在制作_currentRoute之前,您需要等待它设置好,例如:

MaterialApp