Flutter Map 常用操作方法概述

Flutter 中的 Map 是一种键值对的集合,可以存储任意类型的数据,并且可以通过键来访问和操作对应的值。

1. 创建 Map:

可以使用 {} 或者 Map.from() 方法来创建 Map。例如:

dart 复制代码
// 使用 {} 创建 Map
var myMap = {
  'key1': 'value1',
  'key2': 'value2',
  'key3': 'value3',
};

// 使用 Map.from() 创建 Map
var myMap = Map.from([
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3'],
]);
2. 添加元素:

可以使用 map[key] = value 或者 map.put(key, value) 方法来添加元素。例如:

dart 复制代码
myMap['key4'] = 'value4';
myMap.put('key5', 'value5');
3. 获取元素:

可以使用 map[key] 方法来获取元素。如果键不存在,会返回 null。例如:

dart 复制代码
var value = myMap['key1']; // value = 'value1'
4. 删除元素:

可以使用 map.remove(key) 或者 map.clear() 方法来删除元素。例如:

dart 复制代码
myMap.remove('key2'); // 删除键为 'key2' 的元素
myMap.clear(); // 清空所有元素
5. 遍历元素:

使用键来获取值:通过使用键作为索引,可以获取到与之对应的值。例如,map['key']可以获取到键为'key'的元素的值。

可以使用 for..in 循环或者 map.keysmap.values 方法来遍历元素。

5.1 使用keys方法获取所有的键:

map.keys可以获取到Map中所有的键,返回的也是一个Iterable对象

dart 复制代码
for (var key in myMap.keys) {
  print('${key}: ${myMap[key]}');
}

或者:

dart 复制代码
for (var key in myMap.keys) {
  print('${key}: ${myMap.values.firstWhere((value) => value == myMap[key])}');
   // 使用 values 遍历找到对应的值并输出,可能会效率低下,不建议频繁使用此操作。
}

或者

dart 复制代码
void main() {  
  var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};  
    
  for (var entry in map.entries) {  
    print('Key: ${entry.key}, Value: ${entry.value}');  
  }  
}
5.2 Map.Entry
  • firstEntry是Map类的一个方法,用于获取Map中的第一个元素。返回的是一个MapEntry对象,可以通过entry.key和entry.value来获取键和值。
dart 复制代码
var entry = map.firstEntry; // 获取第一个元素  
print('Key: ${entry.key}, Value: ${entry.value}');
  • lastEntry方法返回Map中的最后一个元素
dart 复制代码
var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};
var lastEntry = map.lastEntry;
print('Key: ${lastEntry.key}, Value: ${lastEntry.value}');

输出结果为:Key: key3, Value: value3

  • singleEntry方法返回Map中的唯一个元素,如果Map中只有一个元素,则返回该元素;如果Map中没有元素或者有多个元素,则返回null。
dart 复制代码
var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};
var singleEntry = map.singleEntry;
if (singleEntry != null) {
  print('Key: ${singleEntry.key}, Value: ${singleEntry.value}');
} else {
  print('Map is empty or contains multiple entries.');
}

输出结果为:Key: key3, Value: value3

如果Map中没有元素或者有多个元素,使用singleEntry方法会返回null,需要进行空判断或者异常处理。

5.3 forEach方法对Map中的每个键值对进行遍历
dart 复制代码
void main() {  
  var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};  
    
  map.forEach((key, value) {  
    print('Key: $key, Value: $value');  
  });  
}
5.4 使用for循环遍历Map中的键值对
dart 复制代码
void main() {  
  var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};  
    
  for (var entry in map.entries) {  
    print('Key: ${entry.key}, Value: ${entry.value}');  
  }  
}
5.5 使用entries方法遍历Map中的所有键值对
dart 复制代码
void main() {  
  var map = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'};  
    
  for (var entry in map.entries) {  
    print('Key: ${entry.key}, Value: ${entry.value}');  
  }  
}
相关推荐
Lanren的编程日记6 小时前
Flutter鸿蒙应用开发:生物识别(指纹/面容)功能集成实战
flutter·华为·harmonyos
Lanren的编程日记9 小时前
Flutter鸿蒙应用开发:基础UI组件库设计与实现实战
flutter·ui·harmonyos
西西学代码9 小时前
Flutter---波形动画
flutter
于慨13 小时前
flutter基础组件用法
开发语言·javascript·flutter
恋猫de小郭15 小时前
Android CLI ,谷歌为 Android 开发者专研的 AI Agent,提速三倍
android·前端·flutter
火柴就是我16 小时前
flutter pushAndRemoveUntil 的一次小疑惑
flutter
于慨16 小时前
flutter doctor问题解决
flutter
唔6616 小时前
flutter 图片加载类 图片的安全使用
安全·flutter
Nathan2024061617 小时前
Flutter - InheritedWidget
flutter·dart
恋猫de小郭18 小时前
JetBrains Amper 0.10 ,期待它未来替代 Gradle
android·前端·flutter