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

Flutter中如何从Firestore返回的List<Object?>里分别获取字段名和字段值

解决方案

Firestore的DocumentSnapshot.data()方法默认返回Map<String, dynamic>类型,你获取的List<Object?>本质是由多个文档对应的Map组成的列表,按如下方式即可分别提取字段名和字段值:

完整修改后的代码示例

StreamBuilder<QuerySnapshot>(
  stream: videoProvider,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      List<String> fieldNameList = [];
      List<String> fieldValueList = [];

      for (var doc in snapshot.data!.docs) {
        // 强制转换为Map类型,明确键值结构
        Map<String, dynamic> docData = doc.data() as Map<String, dynamic>;
        // 遍历当前文档所有字段,分别存入对应列表
        docData.forEach((fieldName, fieldValue) {
          fieldNameList.add(fieldName);
          fieldValueList.add(fieldValue.toString());
        });
      }

      // 若每个文档仅含1个字段,可直接通过以下方式获取单组字段名+值
      // String fieldName = fieldNameList.first;
      // String fieldValue = fieldValueList.first;

      // 此处替换为你的实际布局逻辑
      return const SizedBox.shrink();
    }
    // 数据加载中状态
    return const CircularProgressIndicator();
  }
)

逻辑说明

  • 遍历查询快照返回的所有文档,将每个文档的数据源强制转换为Map<String, dynamic>类型
  • 调用Map的forEach方法即可遍历所有键值对,其中键对应字段名,值对应字段值
  • 可以根据实际业务需求,将提取到的字段名和值存入全局变量或者直接用于界面渲染

内容的提问来源于stack exchange,提问作者Luqman Tuke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:08