首页 > 解决方案 > 如何检查特定文档 ID 中是否包含某个值?

问题描述

.exist首先,我想使用该方法检查特定文档 ID 是否存在。如果存在,那么我想检查该文档 ID 是否containsValue == true还有其他功能。

目前,我正在使用 aFutureBuilder从 Firebase 获取详细信息,但它运行不完美。

我附上了一张数据库的图片,其中包含一个带有 +91919982779295 的文档 ID 和一个设置为 true 的字段名称“已验证”。只想检查文档 ID 是否存在,如果存在则它包含值 true 如代码的注释部分所示。

我想这将通过.existand.containsValue方法完成,但我不知道如何将它们放在一起FutureBuilder

这是我的代码:

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:async';

class Navigatorpage extends StatefulWidget {

  var phoneNumber;

  Navigatorpage({this.phoneNumber});

  @override
  _NavigatorpageState createState() => _NavigatorpageState();
}

class _NavigatorpageState extends State<Navigatorpage> {

  var phoneNumber;
  final Firestore firestore = Firestore.instance;

  _NavigatorpageState({this.phoneNumber});


  Future<DocumentSnapshot> getDetails() =>firestore.collection('users').document(+919982779295).get();



  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: FutureBuilder(
        future: Future.wait([
          getDetails()
        ]),
        builder: (context, snapshot){
          Here first need to check



              if( the documentId named +919982779295 exists){
                 if( if exits then check whether it contains the value true as show in the image using  
          containsValue method)
                   { return something;}
               else { return something;}
                 }
           else {return something;}
          }
          
        },
      ),
    );
  }
}

截屏: 在此处输入图像描述

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


我想通了...这就是我要找的

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:kartofill/Phoneverification.dart';
import 'dart:async';

import 'package:kartofill/Splashscreen.dart';

class Navigatorpage extends StatefulWidget {

  var phoneNumber;

  /* Navigatorpage({this.phoneNumber}); */

  @override
  _NavigatorpageState createState() => _NavigatorpageState();
}

class _NavigatorpageState extends State<Navigatorpage> {

  var phoneNumber;
  String font;
  /*final Firestore firestore = Firestore.instance;*/

  /*_NavigatorpageState({this.phoneNumber}); */


  Future <String> getDetails() async{
 final snapShot = await Firestore.instance.collection('users').document('+919954603381').get();
 if(snapShot.exists){
   if(snapShot.data.containsValue("true")){
        font='a';

   }
  else{
     font='b';
   }
 }
 else{
   font='c';
 }

 return font.toString();
  }



  @override
  Widget build(BuildContext context) {
    return FutureBuilder(

      future: Future.wait([getDetails()]),
      builder: (context,snapshot){
        print(snapshot.data.toString());
        switch(snapshot.data.toString()) {

          case'[a]': {

           return Phoneverification();
          }
          break;

          case '[b]': {
            return Text('B');
          }
          break;

          case '[c]': {
            return Text('C');
          }
          break;

          default: {
            return Text('Default');
          }
          break;
        }

      },





    );
  }
}


推荐阅读