Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
626 views
in Technique[技术] by (71.8m points)

dart - How to use async values in Riverpod in flutter?

I'm using Riverpod in my app for state management. Here is my code.

Main method-

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());

I want to show the users an onboarding screen if it's their first time logging in the app. But I don't know how to implement that since i cant use an async method in auth.when(). How do I do that?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...