如何删除Flutter/Dart中具有相同Map Key的重复列表项目



我有一个列表,当用户单击按钮时,我会在其中添加Map值。用户会看到3个按钮,每个按钮都有相同的questionId(例如3(,但每个按钮的answerValue不同。每次用户单击一个按钮,就会向列表中添加一个带有问题id和答案值的Map。如果用户点击了具有相同问题Id:的所有三个按钮,我的列表如下所示

{{questionId: 4, answerValue : 8}, {questionId: 4, answerValue : 7}, {questionId: 4, answerValue : 8}}

所以我现在面临的问题是我有重复的项目,你可以从上面看到。该列表并没有替换answerValue,而是随着用户单击按钮的次数增加而添加越来越多的项目。我想在这里实现的是,如果questionId相同,那么列表应该替换该项,而不是创建一个新的列表条目。我试着使用set((和stackoverflow中的其他答案,但大多数都只是针对一个列表项,我无法实现我想要的。检查以下代码:

//This generates a map
var map = new QuesNValues(questionId: widget.ques.questions[widget.index].question.questionOptions[i].questionId, questionOptionId: val).toJson(); 
// Output: {questionId: 4, questionOptionId: 9}

然后将此地图添加到列表中:

selectedQuesValuesList.add(map);

我试过对列表中的项目使用for语句,但我根本无法使其工作。我只需要列表来替换具有相同questionId的值,而不是创建新项目。

在将响应添加到列表之前,您可以清除它:

selectedQuesValuesList.removeWhere((m) => m.questionId == id);

最新更新