Flutter Firebase开发时_JsonQuerySnapshot无[]方法报错如何解决?
错误原因
snapshot.data 为 _JsonQuerySnapshot 类型,是 Firestore 返回的符合筛选条件的所有文档的集合快照,并非单个用户的文档对象,因此不支持直接通过 [] 运算符读取文档字段。
修复步骤
- 从集合快照的
docs属性中获取查询到的文档列表,由于你是按手机号精准筛选,正常只会匹配到1个用户,取列表第一个元素即可 - 调用单个文档对象的
data()方法获取 Map 格式的字段数据,再读取Gender字段 - 补充匹配不到用户的异常处理逻辑,避免空异常
修正后代码
StreamBuilder<QuerySnapshot>( stream: user .where('Phone Number', isEqualTo: widget.user['ID']) .snapshots(), builder: (context, snapshot) { // 加载状态 if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading"); } // 无匹配数据 if (!snapshot.hasData || snapshot.data!.docs.isEmpty) { return const Text("无用户数据"); } // 获取第一个匹配的文档数据 var profile = snapshot.data!.docs.first.data() as Map<String, dynamic>; return Padding( padding: const EdgeInsets.only(left: 15), child: Text( "${profile["Gender"]}.", ), ); } )
内容的提问来源于stack exchange,提问作者salma.m
相关产品推荐
相关产品推荐

