如何在Flutter中恢复最后一条路线

时间:2019-07-11 23:01:34

标签: flutter dart

我正在开发Flutter应用,但遇到了问题。 在我的main.dart中,将家庭路由设置为“ FirstScreen”,然后用户可以转到LoginScreen登录该帐户。因此,如果我按下主页按钮,然后尝试重新打开该应用,则出现的屏幕是FirstScreen,那么如何显示用户看到的最后一条路线?

我已经在Flutter文档和StackOverflow中的其他问题上搜索了一些解决方案,但没有找到对我有用的东西。

这是我的main.dart版本。

Widget build(BuildContext context) {
    return MaterialApp(
      home: FirstScreen(),
      routes: {
        '/screen1' : (context) => Screen1(),
        '/homeScreen' : (context) => HomeScreen(navigatorKey: navigatorKey,),
        '/registerScreen' : (context) => RegisterScreen(),
        '/screen2' : (context) => Screen2(),
        '/firstScreen' : (context) => FirstScreen(),
        '/userProfileScreen' : (context) => UserProfileScreen(),
      },
      navigatorKey: navigatorKey,
    );

2 个答案:

答案 0 :(得分:0)

您需要跟踪用户访问过的最新路线,并将其存储在持久的位置,以便在应用重启后不受影响。也许将共享首选项包视为一种简单方法:

https://pub.dev/packages/shared_preferences

应用启动后,查看共享首选项以查看是否存储了先前的路线,然后导航至该路线(或将其设置为本地路线)。如果没有,请默认使用FirstScreen。

答案 1 :(得分:0)

我已经找到了使用WidgetBindingObserver的解决方案,并将此行:WidgetsBinding.instance.addObserver(this);放入每个StatefulWidget initState中。