【问题标题】:How to upsert items in Flutter如何在 Flutter 中插入项目
【发布时间】:2021-11-08 22:47:46
【问题描述】:

我有一个清单

List<String> list = ['Hello']

我有具有 onChanged 回调的 TextField。

问题:当 TextField 触发 onChanged 函数时,如何将项目 UPSERT 到列表中

想要的结果: ['Hello', 'NewHello']


onChanged: (_) {
 // What I should do with list. Thanks
}

【问题讨论】:

  • _ 更改为text,然后在回调中list.add(text)。我的意思是onChanged: (text) { list.add(text); }
  • @OMi Shah 它添加了很多项目,因为 onChanged 功能正在工作,谢谢
  • 我想添加,所以只有一项会留在列表中
  • 它会不断添加每一个变化,这就是它的作用!!
  • 然后list.insert(1, text); 应该可以工作。

标签: list flutter dart


【解决方案1】:

你需要检查列表长度是否为2,如果是则更新索引1处的值;如果长度更短,则只需将更改添加到列表中。

使用列表中的add 方法插入更改。

_ 更改为text,然后在回调中:

onChanged: (text) {
     list.length == 2 ? list[1] = text : list.add(text);
}

【讨论】:

  • 谢谢,但是 Insert 方法不适用于这种情况,因为它会插入并添加新的项目列表,即使索引存在。就像在数据库中一样,我需要有类似 UPSERT 的东西。 Upsert 更新特定索引上的项目
  • 这应该作为您的Wanted result: ['Hello', 'NewHello']。如果您只想用新值更新旧值,只需将正确的索引传递给旧元素。
  • 它给了我['Hello', 'Hell', 'Hel', 'He', 'H']
  • @JackSpicy,我的错。我已经更新了我的答案。这将满足您的需求。
  • 列表是可增长的。因此,当长度增加时,它会添加一个新项目(以您的示例): list.add(text) 当 onChanged 函数触发时,它会再次给出'Hello', 'Hell', ...。我需要一个函数来添加一个带有索引的项目,然后只更新它
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多