有没有办法在不注销用户的情况下一键弹出 Flutter 应用程序中的所有屏幕?
Posted
技术标签:
【中文标题】有没有办法在不注销用户的情况下一键弹出 Flutter 应用程序中的所有屏幕?【英文标题】:is there any way to pop all screens in flutter app by one click without logging the user out? 【发布时间】:2021-11-08 07:57:13 【问题描述】:我希望用户能够通过单击手机后退按钮一次来退出应用程序(然后他会收到一条警告消息)。
但我发现的只是调用exit(0)
的选项,但这是将用户注销。
我正在使用 firebase 和颤振。
此外,当我在主页(登录后出现)时按下后退按钮时,我会再次获得登录视图,而不是退出应用程序。 我该如何防止这种情况(因为我希望用户保持登录状态)
这些是我的 main.dart build() 中的代码:
return StreamProvider<User?>.value(
value: logic.listenToUserAuth(),
initialData: null, //user signed out
child: MaterialApp(
//initialRoute: '/login',
//routes: this.routes,
// passing the change in stream to child widgets
home: MainWrapper(routes: this.routes,),
),
这些是来自 MainWrapper build() 的代码,它决定向用户显示哪个视图,取决于他是否登录,但它不起作用.. 用户总是获得“/登录”视图:
final user = Provider.of<User?>(context);
String initRout = "/login";
// the user logged in
if(user != null)
initRout = "/home_page.dart";
return MaterialApp(
initialRoute: initRout,
routes: routes,
);
谢谢
【问题讨论】:
【参考方案1】:对于后退按钮问题,此库将解决您的问题 https://pub.dev/packages/back_button_interceptor
要退出用户,请在点击按钮或执行一些逻辑后使用此方法
FirebaseAuth.instance.signOut();
要使用 Flutter 和 Firebase 保持用户身份验证,请参阅此答案: https://***.com/a/45084649/11838875
【讨论】:
我想要相反的情况,即使应用程序关闭,用户也能保持登录状态。至于图书馆——你能更具体地说明哪种方法适合我的情况吗?我需要弹出应用程序的所有屏幕【参考方案2】:我遇到了同样的问题,Get 包解决了所有问题,使用Get 包,然后使用 Get.offAll("spacify 应该在堆栈中的最后一个屏幕");你就完成了
【讨论】:
以上是关于有没有办法在不注销用户的情况下一键弹出 Flutter 应用程序中的所有屏幕?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不弹出的情况下删除 react-native 中的默认权限?
您可以在不注销用户的情况下更新用户的 cookie 信息吗?