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

Flutter开发:如何根据指定id数组筛选用户列表生成新列表

Flutter 根据指定ID列表筛选集合的实现方法

核心逻辑使用Dart内置的where()遍历+contains()匹配规则即可实现,步骤如下:

  1. 定义原始数据和筛选条件
// 原始用户列表
List<Map<String, dynamic>> users = [
  {
    "id": 31,
    "name": "John",
  },
  {
    "id": 23,
    "name": "Sami",
  },
  {
    "id": 34,
    "name": "Leon",
  }
];

// 筛选目标ID列表
List<int> targetIds = [31, 34];
  1. 执行筛选操作
List<Map<String, dynamic>> filteredUsers = users.where((user) => targetIds.contains(user['id'])).toList();
  • where() 会遍历原始列表,仅保留符合判断条件的元素,返回Iterable类型
  • 每次遍历取出当前元素的id,用contains()判断是否在目标ID列表内,符合则保留
  • 最后调用toList()将Iterable转换为List类型,即可得到预期的筛选结果

如果需要绑定按钮点击触发筛选,直接将筛选逻辑放入按钮的点击回调中即可,示例:

ElevatedButton(
  onPressed: () {
    final filteredUsers = users.where((user) => targetIds.contains(user['id'])).toList();
    // 后续可更新状态变量,刷新UI展示筛选后的列表
    debugPrint(filteredUsers.toString());
  },
  child: const Text('触发筛选')
)

性能优化方案

如果目标ID列表长度较大,可先将ID列表转换为Set类型再做匹配,Set的contains()查找时间复杂度为O(1),比List的O(n)查找效率更高:

final targetIdSet = targetIds.toSet();
final filteredUsers = users.where((user) => targetIdSet.contains(user['id'])).toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:18:05