如何使用提供程序从 Flutter 列表中删除项目?

How to delete an item from a list in Flutter using provider?

我有一个列表,我正试图从中删除特定项目。

我第一次尝试:

Provider.of<WeekList>(context, listen: false).listOfWeeks.remove(widget.index);

那没用。

仔细想想,我意识到提供者正在检索列表,但实际上并没有更新提供者。

所以我决定使用提供程序来保存检索列表并将其保存到新列表中:

List<Week> myList =Provider.of<WeekList>(context, listen: false).listOfWeeks;

然后我尝试删除当前位置的项目:

myList.remove(widget.index);

我希望 myList 在最后一行代码后被缩短一个。但是我在它前后打印了一个,他们都说长度是 6...

不确定为什么不从 myList 中删除任何内容。如果它有效,它应该将它缩短一个,我计划然后尝试更新提供者....但也许我没有正确地解决这个问题。

如果您要按索引删除,则需要使用 removeAt。

在你最后的方法中,你正在改变你的列表的“副本”,你需要做的是实现你的目标是在你的状态中创建函数来更新你的列表并通知听众, 这个函数要放在你的 ChangeNotifier class:

void updateList(int index)
{
   listOfWeeks.removeAt(widget.index);
   notifyListeners();
}

你可以这样称呼它:

Provider.of<WeekList>(context, listen: false).updateList(index);