Каждый раз, когда я вызываю свой ListView, содержимое дублируется

#flutter #dart #listview #duplicates

Вопрос:

У меня есть представление, в котором я показываю все элементы из списка.Когда я снова вхожу в этот режим, все содержимое дублируется.Это исходный код моего промежуточного программного обеспечения, в котором я получаю содержимое из базы данных:

 if (action is GetPersonalExpAction) {  dataService.getEntity("experience/list").then((reponse) =gt; decodeBody(reponse)).then((result) {  Listlt;ItemExperiencegt; experience = [];    for (var element in result) {  experience.add(ItemExperience(  id: element['id'],  job: element['job'],  company: element['company'],  date_from: element['date_from'],  date_to: element['date_to'],  description: element['description'],  ));  }  store.state.personalAreaState.experience!.addAll(experience);  next(action);  });  }  

Интересно, как мне это остановить?

Комментарии:

1. Но я хочу называть это больше раз, потому что я могу удалять элементы из списка, добавлять и редактировать.

2. Я просто хочу добавить какой-нибудь метод, который не добавляет существующие.

Ответ №1:

Если вам нужно вызвать этот метод несколько раз, вы должны очистить store.state.personalAreaState.experience его, прежде чем добавлять данные базы данных. Как это:

 if (action is GetPersonalExpAction) {  dataService.getEntity("experience/list").then((reponse) =gt; decodeBody(reponse)).then((result) {  Listlt;ItemExperiencegt; experience = [];    for (var element in result) {  experience.add(ItemExperience(  id: element['id'],  job: element['job'],  company: element['company'],  date_from: element['date_from'],  date_to: element['date_to'],  description: element['description'],  ));  }  store.state.personalAreaState.experience!.clear(); //lt;-- clear list before add data  store.state.personalAreaState.experience!.addAll(experience);  next(action);  });  }  

Комментарии:

1. Делая это, список в первом месте иногда кажется пустым

2. когда появится пустой ответ, в базе данных есть данные? Я думаю, что это единственный случай, когда список был бы пустым