我正在使用带有 firebaseAuth 的电话号码登录方法,它在 Android 上运行良好,但每次在 IOS 上构建和运行代码时都会保持注销。
FirebaseAuth.instance.authStateChanges().listen((User user) {
if (user == null) {
Navigator.of(context).pushReplacement( new MaterialPageRoute(builder: (context) => SignUp()));
} else {
Navigator.of(context).pushReplacement( new MaterialPageRoute(builder: (context) => Home()));
}
用户在 IOS 上始终为空,是否需要进行任何特定设置才能在 IOS 上保持登录状态?
答案 0 :(得分:0)
根据 Firestore Flutter 文档,您无需执行任何操作即可跨负载设置持久性,它已为您完成。
见https://firebase.flutter.dev/docs/auth/usage/#persisting-authentication-state
它有助于在初始化 Firebase 实例后立即创建侦听器
Firebase.initializeApp().then((value) {
// Start listening to auth changes
FirebaseAuth.instance.authStateChanges().listen((User user) {
// If user ever becomes null then log out
if (user == null) {
// Handle logout
}
});
另一个提示是,在您初始化 Firebase 应用程序后,您可以随时通过检查来检查用户当前是否已登录
FirebaseAuth.instance.currentUser;
因此,您可以尝试不使用 authStateChanges 侦听器(它实际上仅用于处理更改),而只需在导航到下一个屏幕之前检查用户当前是否已登录。在等待初始化 firebase 的未来完成时,可以使用启动页面。