You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Firebase开发时_JsonQuerySnapshot无[]方法报错如何解决?

错误原因

snapshot.data 为 _JsonQuerySnapshot 类型,是 Firestore 返回的符合筛选条件的所有文档的集合快照,并非单个用户的文档对象,因此不支持直接通过 [] 运算符读取文档字段。

修复步骤
  1. 从集合快照的 docs 属性中获取查询到的文档列表,由于你是按手机号精准筛选,正常只会匹配到1个用户,取列表第一个元素即可
  2. 调用单个文档对象的 data() 方法获取 Map 格式的字段数据,再读取 Gender 字段
  3. 补充匹配不到用户的异常处理逻辑,避免空异常
修正后代码
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 18:36:02