首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何打开用户以颤栗方式终止应用程序的最后一页?

如何打开用户以颤栗方式终止应用程序的最后一页?
EN

Stack Overflow用户
提问于 2019-05-18 18:20:52
回答 2查看 1.2K关注 0票数 3

我是新手,我已经制作了大约6-8 pages.All的应用程序,我希望从用户离开或完全终止应用程序的最后一个屏幕上继续。

还有可能使用mobx吗??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-18 18:44:34

每次打开新路径时,您都可以保留路径名,然后每次打开应用程序时都要查找最后一次失败:

代码语言:javascript
运行
复制
String lastRouteKey = 'last_route';

void main() async {
  SharedPreferences preferences = await SharedPreferences.getInstance();
  String lastRoute = preferences.getString(lastRouteKey);
  runApp(MyApp(lastRoute));
}

class MyApp extends StatelessWidget {
  final String lastRoute;

  MyApp(this.lastRoute);

  @override
  Widget build(BuildContext context) {
    bool hasLastRoute = getWidgetByRouteName(lastRoute) != null;

    return MaterialApp(
      home: Foo(),
      initialRoute: hasLastRoute ? lastRoute : '/',
      onGenerateRoute: (RouteSettings route) {
        persistLastRoute(route.name);
        return MaterialPageRoute(
          builder: (context) => getWidgetByRouteName(route.name),
        );
      },
    );
  }

  Widget getWidgetByRouteName(String routeName) {
    switch (routeName) {
      case '/': return MainWidget();
      // Put all your routes here.
      default: return null;
    }
  }

  void persistLastRoute(String routeName) async {
    SharedPreferences preferences = await SharedPreferences.getInstance();
    preferences.setString(lastRouteKey, routeName);
  }
}

请注意,这并不是100%的精确性,因为持久化是异步的,用户可能会在应用程序完成之前关闭它。然而,它通常发生得非常快,几乎所有的时间都应该起作用。

票数 3
EN

Stack Overflow用户

发布于 2019-05-18 18:57:32

  1. 声明一个全局变量gv.strCurPage。
  2. 在每个页面的初始状态中,将gv.strCurPage设置为当前页名,例如“第3页”。然后,将此值存储到SharePreferences中。
  3. 在main.dart内部main()的开头,从SharePreference检索该值,将其存储在gv.strCurPage中,如果该值为空,则设置gv.strCurPage =‘page1 1’。
  4. 在runApp()中,使用开关语句,根据gv.strCurPage的值设置第一个页面。

也就是说,当用户第一次打开应用程序时,第一页是page1。然后,假设用户导航到page5,一个值'page5‘将存储在共享首选项中,并在下次用户打开应用程序时检索。因此,“page5”将成为下一次打开应用程序的第一页。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56201714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档