Flutter Provider:Firebase Auth StateChanges 被监听但状态没有改变

Posted

技术标签:

【中文标题】Flutter Provider:Firebase Auth StateChanges 被监听但状态没有改变【英文标题】:Flutter Provider: Firebase Auth StateChanges is listened but state is not changing 【发布时间】:2021-06-11 16:34:39 【问题描述】:

我目前在我的 Flutter 项目中使用 Firebase 身份验证服务。本项目使用 Provider 作为其状态管理。设置登录和注册服务后,它们都运行良好。但正如您所看到的,wrapper.dart 文件似乎通过来自main.dart 的提供程序(作为父级)侦听AuthStateChanges() 方法。即使很难听,如果状态发生变化,包装器内的 if else 语句也不会重建。结果,如果登录或注册方法成功,主页不会自动推送。但是,当我热重启应用程序时,它确实有效。

我的目标是,只要登录过程成功,包装器 if else 语句就会被监听并明显重建,以便可以实时推送例如 HomePage()

这是我在 Github 上的项目存储库链接:https://github.com/fullstack-dre/packme

有人可以帮我吗?也许关于我应该如何实施提供者?非常感谢。

【问题讨论】:

"寻求调试帮助的问题('为什么这段代码不工作?')必须包括期望的行为、特定问题或错误必要的最短代码 在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:@ 987654322@" 【参考方案1】:

你需要先导入 firebase_auth.dart

import 'package:firebase_auth/firebase_auth.dart';

然后使用authStateChanges() 而不是AuthStateChanges()

您可以使用此代码进行身份验证。

FirebaseAuth.instance
  .authStateChanges()
  .listen((User user) 
    if (user == null) 
      print('User is currently signed out!');
     else 
      print('User is signed in!');
    
  );

【讨论】:

以上是关于Flutter Provider:Firebase Auth StateChanges 被监听但状态没有改变的主要内容,如果未能解决你的问题,请参考以下文章

使用Provider for DI时如何根据Firebase Auth流修改Flutter Firebase Stream监听器?

Flutter:如何设置 Stream 和 Provider

使用提供程序在 Flutter 中进行 Firebase 电话身份验证 [关闭]

我在运行 Flutter 项目时遇到问题

flutter_bloc/provider RepositoryProvider vs Provider

Flutter - Provider - 如何根据 Provider 的值更改 UI?