dart 如何在flutter riverpod中替换选中的项目

3lxsmp7m  于 2022-12-16  发布在  Flutter
关注(0)|答案(1)|浏览(94)

我有一个使用riverpod添加项目的列表。我想替换已选择列表中的项目。
我尝试过的:

class SelectItemNotifier extends StateNotifier<List<SelectedMedia>> {
  SelectItemNotifier() : super([]);

  
 void addItem()  {
      state = [...state, SelectedMedia(
        file: file
        duration: duration,
        id: id,
        type: type,
        videoDuration: videoDuration
      ),
     ];
   }

  void replaceList(int index, SelectedMedia futureFile) {  
     state.replaceRange(index, index + 1, [futureFile]);
  }

}

在正常情况下,我很容易做到

void replaceList(int index, List newList) {  
         lists.replaceRange(index, index + 1, [newList]);
      }

但对江荚号不起作用。

wqnecbli

wqnecbli1#

应该是这样的
如果状态是不可变的创建一个局部临时变量

var temp =List<YOUR_LIST_TYPE>.of(state);
state =  temp.replaceRange(index, index + 1, [newList]);

相关问题