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

Flutter中如何在TextField的onChanged回调中对List执行Upsert操作

实现步骤

Upsert是更新+插入的组合操作,核心逻辑为元素存在则更新,不存在则新增,你可以按以下方式实现:

  1. 不要忽略onChanged回调的入参,这个参数就是TextField当前的输入文本
  2. 编写Upsert逻辑:
List<String> list = ['Hello'];

// 其余代码省略
onChanged: (String input) {
  // 查找输入值在列表中的索引
  final targetIndex = list.indexWhere((item) => item == input);
  if (targetIndex >= 0) {
    // 元素存在,执行更新逻辑,可根据实际需求修改更新规则
    list[targetIndex] = input;
  } else {
    // 元素不存在,追加到列表末尾
    list.add(input);
  }
  // 如果是StatefulWidget中修改列表后需要刷新UI,放开下面的注释
  // setState(() {});
}

如果你不需要更新已有元素,只需要保证列表元素不重复的追加,直接用简化写法就能达到你给出的期望效果:

onChanged: (String input) {
  if (!list.contains(input)) {
    list.add(input);
  }
}

当输入内容为NewHello时,列表最终会变成['Hello', 'NewHello']。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:03