繁体   English   中英

containsValue() 不适用于 Flutter 中 Firebase 的 DocumentSnapshot

[英]containsValue() not working with DocumentSnapshot from Firebase in Flutter

我正在尝试读取 Firebase 中的特定字段,并根据该字段的内容确定 boolean 是否为真。 经过研究,我只找到了 containsValue() 方法作为解决方案,但是,即使我按照示例进行操作,它对我也不起作用。我收到错误消息:“方法‘containsValue’不是为‘函数’类型定义。” 我错过了什么吗?

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

class CProfilePage extends StatefulWidget {
  @override
  _CProfilePageState createState() => _CProfilePageState();
}

class _CProfilePageState extends State<CProfilePage> {
  bool admin;

  @override
  void initState() {
    super.initState();
    getBool();
      setState(() {});
  }

  getBool() async{
    final snapShot = await FirebaseFirestore.instance.collection('All Users')
        .doc(FirebaseAuth.instance.currentUser.uid).get();
    if(snapShot.exists){
      if(snapShot.data.containsValue("Y")){
        admin = true;

      }
      else{
        admin = false;
      }
    }
    return admin;
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[900],
      appBar: AppBar(
        backgroundColor: Colors.transparent,
        elevation: 0.0,
        toolbarHeight: 50.0,
      ),
      body: Column(
        children: [
          Stack(
            children: [ admin == true ?
              compProfileCard() : driverProfileCard(),
              profileImage(),
            ],
          ),
        ],
      ),
    );
  }
}

你可以尝试:

snapShot.data.data().containsValue("Y")

要么:

snapShot.data().containsValue("Y")

代替:

snapShot.data.containsValue("Y")

DocumentSnapshot.data不是属性,而是方法 您需要这样称呼它: snapShot.data()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM