小编Lem*_*ron的帖子

Flutter:具有 onAuthStateChanged 的​​ StreamProvider<FirebaseUser> 始终返回 null 作为第一个值

我正在尝试根据 Firebase 的身份验证状态创建一个简单的导航,但由于某种原因 Provider.of<FirebaseUser>(context)总是返回 null 作为小部件构建方法中的第一个值。因此,我的应用程序始终导航到身份验证屏幕,然后从 Firebase 获取真实的用户状态。我在这里缺少什么?

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
      .then((_) => runApp(App()));
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamProvider<FirebaseUser>.value(
//value of user always corresponds to the right auth status
      value: FirebaseAuth.instance.onAuthStateChanged.map((FirebaseUser user) {
        AuthService.instance.user = user;
        return user;
      }),
      child: MaterialApp(
        title: 'Title',
        theme: lightTheme,
        home: LandingScreen(),
      ),
    );
  }
}

class LandingScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
//Even though the user is logged in …
Run Code Online (Sandbox Code Playgroud)

dart firebase-authentication flutter flutter-provider

6
推荐指数
1
解决办法
3646
查看次数