使用 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();
},
);
我对 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();
},
);