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