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
相关产品推荐
相关产品推荐

