Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 查询firestore文档以驱动小部件选择_Flutter_Dart_Google Cloud Firestore_Widget_Future - Fatal编程技术网

Flutter 查询firestore文档以驱动小部件选择

Flutter 查询firestore文档以驱动小部件选择,flutter,dart,google-cloud-firestore,widget,future,Flutter,Dart,Google Cloud Firestore,Widget,Future,我正在尝试检查firebase中的用户文档,以便确定要显示哪个小部件。基本上,在他们第一次访问应用程序时向他们显示欢迎信息 所以我一直在做这样的事情。我知道这是不对的,但这是我试图实现的流程 我怀疑我需要重构以使用未来(我尝试过但没有成功),但我不知道如何将未来的结果转化为变量,以便驱动逻辑 任何帮助都将不胜感激 省道 省道 Widget构建(BuildContext){ final db=DatabaseService(); var user=Provider.of(上下文); var use

我正在尝试检查firebase中的用户文档,以便确定要显示哪个小部件。基本上,在他们第一次访问应用程序时向他们显示欢迎信息

所以我一直在做这样的事情。我知道这是不对的,但这是我试图实现的流程

我怀疑我需要重构以使用未来(我尝试过但没有成功),但我不知道如何将未来的结果转化为变量,以便驱动逻辑

任何帮助都将不胜感激

省道 省道
Widget构建(BuildContext){
final db=DatabaseService();
var user=Provider.of(上下文);
var userdata=db.userDetails(用户);
var-showWidget;
如果(!userdata.welcome){
showWidget=_profileScreen();
}否则{
showWidget=_welcomeScreen();
}
返回脚手架(
appBar:AppTopNav(“用户配置文件”).build(上下文),
正文:showWidget,
bottomNavigationBar:AppBottomNav(),
);
}

那么,当用户进入你的应用程序时,你想要标准的“入职”屏幕吗?但是你不能问数据库,因为此时你还不知道用户。我选择了一条不同的道路。当用户第一次在设备上输入应用程序时,我会向system.preferences写入数据,如果没有写入任何内容,我会显示入职屏幕。如果这是你想要的,我可以告诉你如何…谢谢马克。当用户注册时,我有一个云函数来创建一个用户配置文件文档,其中一个名为“欢迎”的字段默认为false。因此,在他们进行身份验证并进入“帐户”屏幕后,我希望能够查询数据库并以某种方式指导他们。在他们通过欢迎屏幕后,他们的个人资料会相应地更新。我还需要在应用程序的其他区域执行db看起来像这样的操作,因此我更喜欢使用查询/未来方法,但还是要感谢。我会记住其他区域的系统首选项。
userDetails(FirebaseUser user) async {

 final document = await _db.collection('users').document(user.uid).get(); 
 final userObject = document.data;
 return (userObject);

}
Widget build(BuildContext context) { 

 final db = DatabaseService();
 var user = Provider.of<FirebaseUser>(context);

 var userdata = db.userDetails(user);
 var showWidget;

 if (!userdata.welcome){
   showWidget = _profileScreen();
 }else{
   showWidget = _welcomeScreen();
 }

 return Scaffold(
   appBar: AppTopNav('User Profile').build(context),
   body: showWidget,
   bottomNavigationBar: AppBottomNav(),    
 );
}