如何在flutter中从querysnapshot中获取特定数据

问题描述 投票:0回答:1

我花了很长时间尝试使用 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
。我正在使用文本来显示它。如果有人可以告诉我如何获取数据,请告诉我。

flutter firebase dart google-cloud-firestore flutter-futurebuilder
1个回答
1
投票

由于您在创建

StreamBuilder
时没有指定文档包含哪些数据,因此当您调用
Object
时,您会得到一个
data()
。您需要将其转换为
Map<String, dynamic>
,然后才能从中获取各个字段:

var data = Map<String,dynamic>.from(querySnaphost.docs[0].data() as Map);
return Text(data["peopletohangoutwith"]);
© www.soinside.com 2019 - 2024. All rights reserved.