Flutter 中操作列表中的 Map 的常用用法:

查找元素:

//查找一个对象:

Map<String, dynamic>? findObjectById(int id) {
  return list.firstWhere((element) => element['id'] == id, orElse: () => null);
}

//查找一个对象(可能查不到)
import 'package:collection/collection.dart'; // 需要导入该包
PageTextModelItem? text = pageTextList.value.firstWhereOrNull(
  (obj) => obj.picId == 1,
 
//返回满足条件的第一个元素在列表中的索引
int index = pageTextList.value.indexWhere(
  (obj) => obj.picId == "${pagePictureIndex + 1}",
);
 
void main() {
  print(findObjectById(2)); // 输出: {id: 2, name: Bob}
}

//查找字段等于某个参数的所有对象:
List<Map<String, dynamic>> findObjectsByName(String name) {
  return list.where((element) => element['name'] == name).toList();
}
void main() { print(findObjectsByName('Alice')); // 输出: [{id: 1, name: Alice}, {id: 3, name: Alice}] }

遍历列表中的 Map 元素:

//使用forEach循环
List<Map<String, dynamic>> list = [
  {'id': 1, 'name': 'Alice'},
  {'id': 2, 'name': 'Bob'},
  {'id': 3, 'name': 'Charlie'},
];

void main() {
  list.forEach((element) {
    element.forEach((key, value) {
      print('$key: $value');
    });
    print('---');
  });
}

//使用for循环
List<Map<String, dynamic>> list = [
  {'id': 1, 'name': 'Alice'},
  {'id': 2, 'name': 'Bob'},
  {'id': 3, 'name': 'Charlie'},
];

void main() {
  for (int i = 0; i < list.length; i++) {
    Map<String, dynamic> element = list[i];
    element.forEach((key, value) {
      print('$key: $value');
    });
    print('---');
  }
}

添加新的 Map 元素到列表中:

List<Map<String, dynamic>> list = [
  {'name': 'Alice', 'age': 30},
  {'name': 'Bob', 'age': 25}
];

// 添加新的 Map 元素
Map<String, dynamic> newElement = {'name': 'Charlie', 'age': 35};
list.add(newElement);

替换元素:

List<Map<String, dynamic>> myList = [
  {'id': 1, 'name': 'Alice'},
  {'id': 2, 'name': 'Bob'},
  {'id': 3, 'name': 'Alice'},
];

void main() {
  myList.forEach((element) {
    if (element['name'] == 'Alice') {
      element['name'] = 'Eve'; // 将名字为'Alice'的元素替换为'Eve'
    }
  });

  print(myList); // 输出: [{id: 1, name: Eve}, {id: 2, name: Bob}, {id: 3, name: Eve}]
}

删除:

// 删除指定的 Map 元素
list.remove({'name': 'Bob', 'age': 25});

// 删除匹配条件的 Map 元素
list.removeWhere((map) => map['age'] < 28);

其他常见操作:

// 获取列表长度
int length = list.length;

// 判断列表是否为空
bool isEmpty = list.isEmpty;

// 清空列表
list.clear();

 随机排序

     
//这段代码看起来是在Flutter中使用的语法,它的作用是将 gamesPicModelItemList 列表进行随机排序,
并将排序后的结果赋值给 newgamesPicModelItemLis
newgamesPicModelItemList.assignAll(gamesPicModelItemList.toList()..shuffle());

 

posted on 2024-03-20 17:33  鲤斌  阅读(711)  评论(0)    收藏  举报