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

Flutter中无需指定键获取List<Map<String,dynamic>>键值对方法问询

解决Flutter中Map键值对重复输出的问题

你的问题出在嵌套循环逻辑上:外层遍历map.values、内层遍历map.keys的写法,会让每个值和所有键强行配对,最终导致键值对重复输出。正确的做法是直接遍历Map的键值对条目(entries),每个条目天然对应一组唯一的key和value。

修改后的代码如下:

Expanded(
  child: ListView.builder(
    itemCount: result.length, // 注意统一变量名:原定义为result,需和ListView中的调用保持一致
    scrollDirection: Axis.vertical,
    shrinkWrap: true,
    itemBuilder: (_, index) {
      Map map = result[index];
      return Card(
        elevation: 12,
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              // 遍历map的entries,直接获取每一组键值对
              for (var entry in map.entries)
                Align(
                  alignment: Alignment.centerLeft,
                  child: Text(
                    '${entry.key} : ${entry.value}',
                  ),
                ),
            ],
          ),
        ),
      );
    },
  ),
),

关键说明:

  • map.entries返回的是包含所有键值对的迭代器,每个元素为MapEntry类型,通过entry.key和entry.value可直接拿到对应的键与值,一次遍历就能完成所有键值对的输出,不会产生重复。
  • 注意修正原代码中的变量名不一致问题:定义的数据源变量是result,ListView中需对应使用result.length和result[index],避免报错。

内容的提问来源于stack exchange,提问作者abdifatah nour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:55:39