我对使用Firebase Auth实现提供程序感到有些困惑。每个教程似乎都使用不同的方法。我有一个名为AuthService的服务,其中包含一个变量final FirebaseAuth auth = FirebaseAuth.instance。因此,我想使用以下stream:widged中的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;

最佳答案

您可以使用与此类似的东西,如果用户登录,他将导致MainScreen(),否则将导致您进入LoginPage(),则无需使用provider

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

09-30 11:27