![](/img/trans.png)
[英]Flutter Firebase return a Querysnapshot and DocumentSnapshot in the same widget
[英]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.