You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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) {
    // 处理其他未知异常
  }
}

注意事项:

  1. setPersistence方法仅需要在应用初始化后、首次登录前调用一次即可,后续所有Auth状态都会遵循该配置,不需要每次登录重复调用
  2. 这套代码是跨平台通用的,Android/iOS/Web/桌面端都会自动适配底层实现逻辑
  3. 调用signOut()方法后,无论配置的是哪种持久化级别,本地存储的Auth状态都会被完全清除

内容的提问来源于stack exchange,提问作者moh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:39:02