我花了很长时间尝试使用 Futurebuilder 查询快照从 firebase 集合中获取特定数据。我为 querysnapshot 创建了一个类,它是:
class Crud {
final currentUser = FirebaseAuth.instance.currentUser!.uid;
Future<QuerySnapshot> getData() async {
return await FirebaseFirestore.instance
.collection("userpreferences")
.where(FirebaseAuth.instance.currentUser!.uid)
.get();
}
}
这是我的未来建设者。
FutureBuilder<QuerySnapshot>(
future: crud.getData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final querySnaphost = snapshot.data; // Get query snapshot
if (querySnaphost!.docs.isNotEmpty) {
print(querySnaphost.docs[0].data());
// Print is giving correct documents
// I/flutter (16837): {peopletohangoutwith: Testing it again
// I/flutter (16837): , agerange: 29 - 49}
// Document exists
final documentSnapshot = querySnaphost.docs;
我只想显示此文档中的
agerange
。我正在使用文本来显示它。如果有人可以告诉我如何获取数据,请告诉我。
由于您在创建
StreamBuilder
时没有指定文档包含哪些数据,因此当您调用 Object
时,您会得到一个 data()
。您需要将其转换为 Map<String, dynamic>
,然后才能从中获取各个字段:
var data = Map<String,dynamic>.from(querySnaphost.docs[0].data() as Map);
return Text(data["peopletohangoutwith"]);