我正在尝试在用户登录时实施“保持登录状态”复选框。如果选中此复选框,则用户应保持登录状态,直到他们明确注销为止。如果未选中,则用户仅应保持登录状态,直到他们关闭该应用。
Flutter Firebase身份验证软件包没有用于配置身份验证持续时间的方法,或者至少我没有找到方法。
我尝试使用WidgetsBindingObserver的didChangeAppLifecycleState(..)方法的AppLifecycleState.detached状态关闭应用程序时的状态。我可以看到调用了signOut()方法,但是尽管如此,用户在下次启动应用程序时仍保持登录状态。鉴于该应用程序即将退出,我并不感到惊讶。
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if( state == AppLifecycleState.detached ){
FirebaseAuth.instance.signOut();
}
}
我缺少任何好的选择吗?
答案 0 :(得分:1)
默认情况下,Firebase身份验证SDK将身份验证状态持久保存到本地存储,然后在应用重新启动时从本地存储中还原身份验证状态。
如果您希望状态不持久,则可以通过调用以下命令来配置应用程序启动时的状态:
await FirebaseAuth.instance.setPersistence(Persistence.NONE);
另请参阅persisting authentication state上的FlutterFire文档。
答案 1 :(得分:0)
那是因为signOut()返回了Future。因此,您必须await
。因此,假设您有一个函数userSignOut
。
Future<void> userSignOut() => FirebaseAuth.instance.signOut();
然后在按钮上使用它...
IconButton(
icon: const Icon(Icons.exit_to_app),
onPressed: () async {
await userSignOut();
},
)
这应该可以解决您的问题。如果仍然无法使用,请提供更多相关代码。