如何根据Firestore文件是否存在使Flutter显示不同的屏幕?

时间:2020-04-07 18:51:25

标签: firebase flutter google-cloud-firestore

我是扑朔迷离的新手,正在设计一个需要用户登录的应用程序。用户注册帐户后,将被要求在进入主屏幕之前填写一些用户信息。如果用户注册了帐户,但是下次登录时不填写其信息,则应返回此屏幕。当前,有一个流在监视用户的价值。如果该值为null,则显示登录页面,否则将显示主页。

我在实现用户信息屏幕时遇到问题。会设置一个监视Firestore文档的流,如果文档存在则返回主页,否则向用户显示信息屏幕是最好的方法,如果可以的话,我该怎么做?

这是我的代码,用于检查用户是否登录:

Widget build(BuildContext context) {

     return StreamProvider<User>.value(
       value: AuthService().user,
       child: MaterialApp(
      home: SignedIn(),
     )
     );
  }

以及SignedIn()小部件的代码:

    Widget build(BuildContext context) {

    final user = Provider.of<User>(context);

     if (user == null) {
      return Authenticate();
    } else {
        return Home();
    }
  }

1 个答案:

答案 0 :(得分:0)

我可能会尝试这样的事情。

StreamSubscription _subscription;

_subscription = yourStream.listen((data) {
  // navigate to whatever screen depending on the data
  if(data.signedIn){
    Navigator.pushNamed(context, "whatever_route"); 
  }
});