扑。镖。 Flutter - 替换列表中的项目

Posted

技术标签:

【中文标题】扑。镖。 Flutter - 替换列表中的项目【英文标题】:Flutter. Dart. Flutter - replacing a item in a list 【发布时间】:2021-06-13 15:57:34 【问题描述】:
List<int> myList = [1,2,3];
int i = 2;
myList[i] = 4; // myList = [1,2,4]

但是如果我不知道 myList 是否包含特定索引处的数据怎么办?然后它给了我范围错误。

i = 4;
myList[i] = 4 // range error
if(myList[i] != null) myList[i] = 4 //range error
myList.insert(i, 4) // i want to replace, not shift values.

在特定索引处替换列表值的唯一方法是先检查整个列表长度吗?

【问题讨论】:

你的第一行问题是错误的。 List&lt;myList&gt; = [1,2,3]; 在那里是变量名。什么是列表类型?我认为根据您给定的数据,它是 int 的。请提供有效信息。 即使我发布了我的答案(对于 int)。你可以去看看。 【参考方案1】:

这是您可以在之前检查索引的示例,如果该条件为真,那么只有它会更新值。

void main() 
  List<int> myList1 = [1,2,3];
  int i = 2;
  if(myList1.length> i) myList1[i] = 4; // myList = [1,2,4]
  myList1.forEach(print);
  
  
  int j = 5;
  if(myList1.length> j) myList1[j] = 4; // myList = [1,2,4]
  myList1.forEach(print); // It will print as it is last one.

谢谢。

【讨论】:

【参考方案2】:

据我了解,您想知道是否有任何其他方法可以检查您的列表是否存在索引。 如果是的话:

List<int> myList = [1,2,3];
int i = 2;
if(myList.asMap().containsKey(i)) myList[i] = 4

如果我理解你的问题,请告诉我。

【讨论】:

是的,但是,有没有更高效的方法来做到这一点,开箱即用?如果不是,这是一个选项。 myList = myList.map((e) =&gt; e == 2 ? 4 : e).toList();【参考方案3】:

试试这样:

if(i<=myList.length)
 myList[i]=4;
 

【讨论】:

以上是关于扑。镖。 Flutter - 替换列表中的项目的主要内容,如果未能解决你的问题,请参考以下文章

删除项目后刷新列表 - Flutter

关注 ListView 的底部?扑

扑;小部件的排序列表

如何从列表 Dart 中删除重复项 |扑

在 DropDownButton 中使用动态列表 |扑

如何从 Provider 创建一个下拉列表? (扑)