flutter 抖动;替换列表中的项目

5cg8jx4n  于 2022-12-14  发布在  Flutter
关注(0)|答案(4)|浏览(199)

我的应用程序里有个清单。里面有几个项目。
我想用另一个用户输入(Another String)来替换每一个等于用户输入(A String)的项。(如果解决方案是删除该项,然后添加一个新项,它需要位于列表中的相同位置)
我该怎么做?
谢谢你:)

sdnqo3pr

sdnqo3pr1#

您也可以使用***replaceRange***执行以下操作:

void main() {
  var list = ['Me', 'You', 'Them'];
  print(list); // [Me, You, Them]
  var selected = 'You'; // user input A (find)
  var newValue = 'Yours'; // user input B (replace)
  
  // find the item you want to replace, in this case, it's the value of `selected`.
  var index = list.indexOf(selected);
  
  // if replacing only one item, the end index should always be `startIndex` +1.
  // `replaceRange` only accepts iterable(list) so `newValue` is inside the array.
  list.replaceRange(index, index + 1, [newValue]);
  
  print(list); // [Me, Yours, Them]
}
nfg76nw0

nfg76nw02#

for (int i = 0; i < LIST.length; i++){
    if (LIST[i] == USERINPUT1){
        LIST[i] = USERINPUT2;
    }
}

基本上,在应用程序中遍历列表,检查输入是否等于用户的输入。

index = LIST.indexOf(USERINPUT1);

if (index != -1){
    LIST[index] = USERINPUT2;
}

不过,这只适用于第一次出现的情况。

b4qexyjb

b4qexyjb3#

我会这样做:

void main() {
  String inputString = 'myInput'; // User input to replace inside the list
  List<String> list = ['1', inputString, '3', '4', '5', inputString, '7']; // List of items
  List<String> filteredList = list.where((e) => e == inputString).toList();
  for (final e in filteredList) {
    final index = list.indexOf(e);
    list.removeAt(index);
    list.insert(index, 'newInput'); // Replacing inputString by 'newInput'
  }
}

基本上我所做的就是创建一个子列表filteredList,其中只包含用户输入的出现。然后我遍历我的filteredList,在从list中删除项之前,我会保留它的索引,以便在正确的位置插入新元素。
Try the code on DartPad

jum4pzuy

jum4pzuy4#

替换基元类型的第一个匹配项

final l = [1,2,3,4];
l[l.indexOf(2)] = 5;
print(l); // [1,5,3,4]

相关问题