ContainesValue()无法在Flatter中使用来自Firebase的DocumentSnapshot
我试图读取Firebase中的一个特定字段,并根据该字段的内容确定布尔值是否为真。在做了研究之后,我发现containsValue()方法只是解决这个问题的一种方法,但是,即使我按照示例进行操作,它对我也不起作用。我得到了一个错误:“没有为类型‘Function’定义方法‘containsValue’。”ContainesValue()无法在Flatter中使用来自Firebase的DocumentSnapshot,firebase,flutter,dart,Firebase,Flutter,Dart,我试图读取Firebase中的一个特定字段,并根据该字段的内容确定布尔值是否为真。在做了研究之后,我发现containsValue()方法只是解决这个问题的一种方法,但是,即使我按照示例进行操作,它对我也不起作用。我得到了一个错误:“没有为类型‘Function’定义方法‘containsValue’。” import 'dart:async'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/
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(),
],
),
],
),
);
}
}
导入'dart:async';
导入“包:firebase_auth/firebase_auth.dart”;
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“包:cloud_firestore/cloud_firestore.dart”;
导入“package:url_launcher/url_launcher.dart”;
类CProfilePage扩展了StatefulWidget{
@凌驾
_CProfilePageState createState()=>CProfilePageState();
}
类CProfilePageState扩展了状态{
布尔行政;
@凌驾
void initState(){
super.initState();
getBool();
setState((){});
}
getBool()异步{
最终快照=等待FirebaseFirestore.instance.collection('所有用户')
.doc(FirebaseAuth.instance.currentUser.uid).get();
if(snapShot.exists){
if(snapShot.data.containsValue(“Y”)){
admin=true;
}
否则{
admin=false;
}
}
返回管理员;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:颜色。灰色[900],
appBar:appBar(
背景颜色:颜色。透明,
标高:0.0,
高度:50.0,
),
正文:专栏(
儿童:[
堆叠(
children:[admin==true?
compProfileCard():driverProfileCard(),
profileImage(),
],
),
],
),
);
}
}
您可以尝试使用:
snapShot.data.data().containsValue("Y")
或:
而不是:
snapShot.data.containsValue("Y")
?
文档快照。数据
不是一个属性,而是一个属性。您需要这样调用它:snapShot.data()
snapShot.data.containsValue("Y")