使用 Flutter 和 Provider 实现 Firebase Auth

Implementation of Firebase Auth with Flutter and Provider

我对 Provider with Firebase Auth 的实现有点困惑。每个教程似乎都使用不同的方法。

我有一个名为 AuthService 的服务,其中包含一个变量 final FirebaseAuth auth = FirebaseAuth.instance。所以,我想在 widged 中使用以下 stream: AuthService.auth.onAuthStateChanged。问题是我应该使用类似的东西:

StreamProvider<FirebaseUser>.value(
  value: AuthService().auth.onAuthStateChanged,
  child: ...

或者像这样创建一个构造函数:

Provider<AuthService>(
  create: (_) => AuthService(),
  child: ...
)

并在小部件中的某处访问它:

final authService = Provider.of<AuthService>(context);<br>
final user = authService.auth.onAuthStateChanged;

提供程序包公开了不同类型的提供程序,您可以在其页面here(在其页面底部)中检查所有类型。

使用提供商而不是其他提供商取决于您的需要,就我而言,提供商(列表中的第一个)没问题。

你可以使用类似这个东西,如果用户登录他会引导到MainScreen()否则它会引导你到LoginPage(),你不需要使用 provider

Widget _handleAuth() {
    return StreamBuilder<FirebaseUser>(
      stream: FirebaseAuth.instance.onAuthStateChanged,
      builder: (BuildContext context, snapshot) {
        return (!snapshot.hasData)
            ? LoginPage()
            : MainScreen();
      },
    );