扑动 Firebase authStateChanges 没有被触发
Posted
技术标签:
【中文标题】扑动 Firebase authStateChanges 没有被触发【英文标题】:fluttrer Firebase authStateChanges doesn't get triggered 【发布时间】:2021-07-22 22:30:06 【问题描述】:我的 MacBook Pro M1 更新到 Big Sur 11.3,ios 模拟器更新到 14.5
现在我的 Flutter 项目,它使用 Firebase 身份验证并且过去工作得很好,在模拟器和 iOS 设备(iOS 14.5)上都显示出混乱的身份验证行为:
-
我以 UserA 身份登录,authStateChanges 没有触发
我以 UserB 身份登录,authStateChanges 被触发 - 一切正常
我重新启动应用程序 (VSCode),然后我发现自己回到了登录屏幕,因为 authStateChanges 返回 null(firebaseUser = null,请参阅代码)
测试 firebase_auth: ^1.0.0 和 firebase_auth: ^1.1.2
示例代码(以前可以正常工作):
FirebaseAuth.instance.authStateChanges().listen((User firebaseUser)
// if null goto login screen, otherwise goto user screen
);
正在下载 iOS 14.4 模拟器 - 以便在其上测试我的应用程序...
更新: 所以我在 iOS 14.4 模拟器上看到了同样的行为。 我的 Firebase 身份验证设置是否有可能发生了变化? 这是什么原因造成的?
更新 2: 在我的 iPhone 上以发布模式测试,我看到了相同的行为: 杀死我的应用程序后,我发现自己回到了登录屏幕...... 所以很明显是一个新的编译版本导致了这个,但我不知道它是什么......
更新 3: 刚刚恢复到我的代码的 2 周前版本,仍然是同样的问题! 所以我开始认为这不是代码问题,而是 Mac 配置问题 - 可能是 Big Sur 11.3,也可能是新的 Flutter 版本 (2.0.5) 很郁闷...
【问题讨论】:
我遇到了同样的问题,这是 1.1.2 版本的问题。 github.com/FirebaseExtended/flutterfire/issues/5952 现在仍然对我有用...更改为 1.0.4(核心)和 1.1.1(身份验证)版本,进行了所有清理,并从模拟器中删除了所有内容。仍然遇到同样的问题 【参考方案1】:实际上,已经有一个未解决的问题:https://github.com/FirebaseExtended/flutterfire/issues/5952
如果我使用旧版本,它适用于我:
firebase_core: 1.0.4
firebase_auth: 1.1.1
那么你必须这样做:
flutter clean
pod deintegrate
rm Podfile.lock
pod cache clean --all
flutter run
【讨论】:
现在仍然对我有用...更改为 1.0.4(核心)和 1.1.1(身份验证)版本,进行了所有清理,并从模拟器中删除了所有内容。仍然遇到同样的问题 您能否在您的 Pubspec.lock 中检查您的版本是否与您的 pubspec.yaml 中的版本相同?您能否在 Podfile.lock 中检查您的版本是:Firebase/Auth (7.3.0)? 天哪!就是这样!我使用的是胡萝卜符号: firebase_core: ^1.0.0 firebase_auth: ^1.0.0 我现在明白它采用了最新版本(在 pubspec.lock 中可见) 将其更新为: firebase_core: 1.0.4 firebase_auth: 1.1.1 并且有用!非常感谢!我在哪里可以进一步阅读 thepub spec.yaml 语法规则?以上是关于扑动 Firebase authStateChanges 没有被触发的主要内容,如果未能解决你的问题,请参考以下文章
扑动 Firebase 动画列表视图如何将数据传递到详细信息屏幕