Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase 我想在firestore文档中检查特定用户是否退出_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase 我想在firestore文档中检查特定用户是否退出

Firebase 我想在firestore文档中检查特定用户是否退出,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,当我的应用程序运行时,我会用确切的文档名调用firestore collection。 我的要求是,如果documentId已经存在,那么它将返回一个空白容器 如果它不存在,那么它将返回一个提升的按钮,在那里可以添加详细信息。当前我正在使用流生成器,但它不工作 Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Safe

当我的应用程序运行时,我会用确切的文档名调用firestore collection。 我的要求是,如果documentId已经存在,那么它将返回一个空白容器 如果它不存在,那么它将返回一个提升的按钮,在那里可以添加详细信息。当前我正在使用流生成器,但它不工作

Widget build(BuildContext context) {

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: SafeArea(
        child: Scaffold(
          appBar: AppBar(title: Text('KartOfill',),backgroundColor: Colors.red,),
          body: StreamBuilder<Object>(
            stream: Firestore.instance.collection('users').document('9954603381').snapshots(),
            builder: (context, snapshot) {

            

              if(snapshot.hasData){
              return Container();
              }

              return Container(
                child: RaisedButton(
                  onPressed: () async{

                    var firebaseUser = await FirebaseAuth.instance.currentUser();
                    firestore.collection("users").document('9954603381').setData(
                        {
                          "name" : "john",
                          "age" : 50,
                          "email" : "example@example.com",
                          "address" : {
                            "street" : "street 24",
                            "city" : "new york"
                          }
                        }).then((_){
                      print("success!");
                    });





                  },
                ),


              );
            }
          ),
        ),
      ),
    );
  }
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:安全区(
孩子:脚手架(
appBar:appBar(标题:Text('KartOfill',),背景颜色:Colors.red,),
正文:StreamBuilder(
流:Firestore.instance.collection('users').document('9954603381').snapshots(),
生成器:(上下文,快照){
if(snapshot.hasData){
返回容器();
}
返回容器(
孩子:升起按钮(
onPressed:()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
firestore.collection(“用户”).document(“9954603381”).setData(
{
“姓名”:“约翰”,
“年龄”:50岁,
“电子邮件”:example@example.com",
“地址”:{
“街道”:“第24街”,
“城市”:“纽约”
}
}).然后(){
打印(“成功!”);
});
},
),
);
}
),
),
),
);
}

以下是如何使用
FutureBuilder

Firestore firestore = Firestore.instance;

Widget build(BuildContext context) {
  return MaterialApp(
    debugShowCheckedModeBanner: false,
    home: SafeArea(
      child: Scaffold(
        appBar: AppBar(
          title: Text(
            'KartOfill',
          ),
          backgroundColor: Colors.red,
        ),
        body: MyWidget(),
      ),
    ),
  );
}

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: Future.wait(
          [
            _getDoc(),
            _getFirebaseUser()
          ]
        ),
        builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
          DocumentSnapshot doc = snapshot.data[0];
          FirebaseUser firebaseUser = snapshot.data[1];
          if (doc.exists) {
            return Container();
          }

          return Container(
            child: RaisedButton(
              onPressed: () {
                // FirebaseUser firebaseUser; //defined above
                firestore.collection("users").document('9954603381').setData({
                  "name": "john",
                  "age": 50,
                  "email": "example@example.com",
                  "address": {"street": "street 24", "city": "new york"}
                }).then((_) {
                  print("success!");
                });
              },
            ),
          );
        });
  }
}

Future<DocumentSnapshot> _getDoc() => 
    firestore.collection('users').document('9954603381').get();

Future<FirebaseUser> _getFirebaseUser() => 
    FirebaseAuth.instance.currentUser();

Firestore-Firestore=Firestore.instance;
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:安全区(
孩子:脚手架(
appBar:appBar(
标题:正文(
“KartOfill”,
),
背景颜色:Colors.red,
),
正文:MyWidget(),
),
),
);
}
类MyWidget扩展了StatefulWidget{
@凌驾
_MyWidgetState createState()=>\u MyWidgetState();
}
类_MyWidgetState扩展状态{
@凌驾
小部件构建(构建上下文){
回归未来建设者(
未来:未来,等等(
[
_getDoc(),
_getFirebaseUser()
]
),
生成器:(BuildContext上下文,异步快照){
DocumentSnapshot doc=snapshot.data[0];
FirebaseUser FirebaseUser=snapshot.data[1];
如果(文件存在){
返回容器();
}
返回容器(
孩子:升起按钮(
已按下:(){
//FirebaseUser FirebaseUser;//以上定义
firestore.collection(“用户”).document(“9954603381”).setData({
“姓名”:“约翰”,
“年龄”:50岁,
“电子邮件”:example@example.com",
“地址:{“街道”:“第24街”,“城市”:“纽约”}
}).然后(){
打印(“成功!”);
});
},
),
);
});
}
}
Future\u getDoc()=>
firestore.collection('users').document('9954603381').get();
Future\u getFirebaseUser()=>
FirebaseAuth.instance.currentUser();

您可能应该使用一个未来的构建器,并在下面为您编写了一个示例。如果这解决了您的问题,请接受答案。对于返回布尔值的文档,有一个
.exists
方法。因此,与其检查
doc!=空
,最好检查
文档是否存在