Flutter/Dart中如何将Map键与值合并为‘key : value’格式
你可以通过遍历Map的entries属性获取每个键值对,直接拼接成key : value的格式,替换原来分开存储键和值的逻辑。以下是两种常见实现方式:
方式一:每个键值对作为列表的独立元素
这种方式会把每个key : value单独存入列表,比如一个Map有6个键值对,就会向列表中添加6个元素:
List<Map<String, dynamic>> incidentList = [ for (final json in listNode.map((x) => x.toJson())) { 'Code': json['field'][0]['field_value'], 'Description': json['field'][1]['field_value'], 'Organisation Unit': json['field'][2]['field_value'], 'Date Reported': json['field'][3]['field_value'], 'Status': json['field'][4]['field_value'], 'RunHyperlink': json['run_hyperlink'] } ]; final List<String> values = []; for (final item in incidentList) { // 遍历当前Map的所有键值对 for (final entry in item.entries) { // 拼接成 "key : value" 格式并加入列表 values.add('${entry.key} : ${entry.value.toString()}'); } } await WriteCache.setListString(key: 'cache4', value: values);
方式二:每个Map的所有键值对合并为一个字符串存入列表
如果希望每个事故条目(incidentList中的每个item)的所有键值对作为一个整体字符串(用换行分隔)存入列表,可使用以下写法:
List<Map<String, dynamic>> incidentList = [ for (final json in listNode.map((x) => x.toJson())) { 'Code': json['field'][0]['field_value'], 'Description': json['field'][1]['field_value'], 'Organisation Unit': json['field'][2]['field_value'], 'Date Reported': json['field'][3]['field_value'], 'Status': json['field'][4]['field_value'], 'RunHyperlink': json['run_hyperlink'] } ]; final List<String> values = []; for (final item in incidentList) { // 将当前Map的所有键值对拼接成带换行的字符串 final entryString = item.entries .map((entry) => '${entry.key} : ${entry.value.toString()}') .join('\n'); values.add(entryString); } await WriteCache.setListString(key: 'cache4', value: values);
关键说明
- 使用
item.entries可以直接获取Map的键值对集合,比单独处理keys和values更直观,也能保证键和值的对应关系不会出错。 - 用
${entry.key} : ${entry.value.toString()}完成格式拼接,确保每个元素都是你需要的key : value样式。
内容的提问来源于stack exchange,提问作者JoshuaaMarkk
相关产品推荐
相关产品推荐

