Flutter中如何在TextField的onChanged回调中对List执行Upsert操作
实现步骤
Upsert是更新+插入的组合操作,核心逻辑为元素存在则更新,不存在则新增,你可以按以下方式实现:
- 不要忽略
onChanged回调的入参,这个参数就是TextField当前的输入文本 - 编写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
相关产品推荐
相关产品推荐

