@AlexCruel

Обновление массива в Statefull Widget?

"Screnn" циклом генерирует листинг контактов через Statefull виджет "ContactItem".
children: [
            for (Contact contact in _filteredContactsList)
              ContactItem(contact: contact, isAllChecked: isAllChecked,)
          ],


"_filteredContactsList" - массив контактов, который обновляется (setState) при определенных условиях в "Screen".
Если условие происход, массив обновляется. Statefull виджет "ContactItem" тоже обновляется, но неправильно. Если в массиве убираются определенные элементы (контакты), то виджет как будто оставляет старый массив, но обрезает его на количество элементов, которое стало в "Screnn".

Например.
Массив [1, 2, 3, 4, 5, 6, 7].
Произошло изменение массива в "Screnn".
Новый массив [1, 2, 3, 5, 6, 7].
В Statefull виджете отобразилось [1, 2, 3, 4, 5, 6].
То есть как бы убрали элемент 4 (четыре), а фактически в Statefull виджете массив обрезался на один элемент с конца. Да, массив стал меньше, но почему он не обновлися в виджете?

Если виджет "ContactItem" сделать Stateless, тогда все работает.
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@ChessMax
Видимо необходимо переопределить метод didUpdateWidget и обновить Стейт, чтобы отображались актуальные данные. Так же неплохо бы было добавить код ваших виджетов (минимально воспроизводимый пример), чтобы было возможно более точно определить в чем проблема.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы