如何将Firebase身份验证添加到Flatter?

如何将Firebase身份验证添加到Flatter?,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,Flatter Firebase身份验证的官方文档提到此代码以检查用户是否登录: FirebaseAuth.instance .authStateChanges() .listen((用户){ if(user==null){ 打印('用户当前已注销!'); }否则{ 打印('用户已登录!'); } }); 文档中还提到Firebase必须先初始化,所以我将初始化代码添加到main.dart: 类MyApp扩展了无状态小部件{ 最终未来_initialization=Firebase.initi

Flatter Firebase身份验证的官方文档提到此代码以检查用户是否登录:

FirebaseAuth.instance
.authStateChanges()
.listen((用户){
if(user==null){
打印('用户当前已注销!');
}否则{
打印('用户已登录!');
}
});
文档中还提到Firebase必须先初始化,所以我将初始化代码添加到
main.dart

类MyApp扩展了无状态小部件{
最终未来_initialization=Firebase.initializeApp();
@凌驾
小部件构建(构建上下文){
回归未来建设者(
未来:_初始化,
生成器:(上下文,快照){
if(snapshot.hasError){
//处理错误
}
if(snapshot.connectionState==connectionState.done){
返回AuthState();
}
返回循环ProgressIndicator();
},
);
}
}
AuthState
是我想要管理身份验证状态的地方。我已将其添加到同一文件中

类AuthState扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“Auth”,
主页:FirebaseAuth.instance.authStateChanges().listen((用户){
if(user==null){
返回屏幕();
}否则{
返回主屏幕();
}
}),
);
}
}
上面的代码不起作用,因为
home
需要一个小部件,而
authStateChanges
返回
StreamSubscription
,那么如何使它起作用呢?如果用户未通过身份验证,我想重定向到注册屏幕,如果用户通过身份验证,我想重定向到主屏幕。

您可以使用来使用身份验证状态更改流

导入“包装:颤振/材料.省道”;
类AuthWidget扩展了StatefulWidget{
MyStatefulWidget({Key}):超级(Key:Key);
@凌驾
_AuthWidgetState createState()=>\u AuthWidgetState();
}
类_AuthWidgetState扩展状态{
小部件构建(构建上下文){
返回流生成器(
流:FirebaseAuth.instance.authStateChanges(),
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.active){
如果(snapshot.data==null){
返回屏幕();
}否则{
返回主屏幕();
}
}否则{
返回中心(
子对象:CircularProgressIndicator(),
);
}
},
);
}
}

谢谢。获取另一个没有初始化firebase应用程序的错误,请调用firebase initialize,导致错误的小部件是
AuthState
。身份验证状态将在将来出现,因此只有在初始化完成后才会触发?您是否可以尝试将Firebase应用程序初始化移动到类似于示例的
main
函数,并告诉我这是否有任何区别?