如何在颤振中使用 Riverpod 中的异步值?

时间:2021-01-06 18:00:10

标签: flutter dart riverpod

我在我的应用中使用 Riverpod 进行状态管理。这是我的代码。

主要方法-

runApp(
      MaterialApp(
                debugShowCheckedModeBanner: false,
                theme: ThemeProvider.themeOf(themeContext).data,
                home: route.Route(),
              );
            
    ); 
class Route extends ConsumerWidget {
  @override
  Widget build(BuildContext context, ScopedReader watch) {
    AsyncValue<User> auth = watch(authStateChangesProvider);
    return auth.when(
      data: (user) {
        if (user != null && user.uid != null) {
       return HomePage();
        } else {
          return LoginPage();
        }
      }, 
      loading: () => CircularProgressIndicator(),
      error: (e, o) => Text('error'), 
    );
  }
}

AuthStateChanges-

final firebaseAuthProvider =
    Provider<FirebaseAuth>((ref) => FirebaseAuth.instance);

final StreamProvider<User> authStateChangesProvider = StreamProvider<User>(
    (ref) => ref.watch(firebaseAuthProvider).authStateChanges());

如果用户第一次登录应用程序,我想向他们显示一个入职屏幕。但我不知道如何实现它,因为我无法在 async 中使用 auth.when() 方法。我该怎么做?

0 个答案:

没有答案