Flutter中如何设置Firebase Auth状态持久化级别为LOCAL?
Flutter 端 Firebase Auth 状态持久化实现方案
Flutter 官方的 firebase_auth 插件默认已经开启LOCAL级别的持久化,Auth状态会在应用重启、设备重启后保留,除非用户主动登出或者卸载应用。如果需要显式修改持久化级别,可以通过以下流程实现:
支持的持久化类型
Persistence.LOCAL:本地持久化,重启应用、重启设备后状态依然保留,是Android/iOS/macOS/Windows桌面端的默认值Persistence.SESSION:会话级持久化,对应你提供的Web端browserSessionPersistence,应用退出/浏览器标签页关闭后状态清除,是Web端的默认值Persistence.NONE:不持久化,刷新页面/重启应用就会清除登录状态
代码实现(与你提供的Web端逻辑完全对应)
首先导入依赖包:
import 'package:firebase_auth/firebase_auth.dart';
具体业务逻辑:
Future<void> signInWithLocalPersistence(String email, String password) async { final auth = FirebaseAuth.instance; try { // 先设置持久化级别为LOCAL await auth.setPersistence(Persistence.LOCAL); // 持久化设置完成后,再执行邮箱密码登录 final userCredential = await auth.signInWithEmailAndPassword( email: email, password: password, ); // 登录成功后续逻辑 if (userCredential.user != null) { // 可处理页面跳转、用户信息存储等操作 } } on FirebaseAuthException catch (e) { // 处理Auth相关错误 final errorCode = e.code; final errorMessage = e.message; // 自定义错误提示逻辑 } catch (e) { // 处理其他未知异常 } }
注意事项:
setPersistence方法仅需要在应用初始化后、首次登录前调用一次即可,后续所有Auth状态都会遵循该配置,不需要每次登录重复调用- 这套代码是跨平台通用的,Android/iOS/Web/桌面端都会自动适配底层实现逻辑
- 调用
signOut()方法后,无论配置的是哪种持久化级别,本地存储的Auth状态都会被完全清除
内容的提问来源于stack exchange,提问作者moh
相关产品推荐
相关产品推荐

