Имеется CustomScrollView, список slivers для которого формируется по данным из блока в вынесеном виджете.
Схема примерно такая:
CustomScrollView(
slivers:
for (var element in state.array)
Persistent header(),
SliverGrid()
)
До добавления данных список выглядит примерно так:
3й,
2й,
1й,
0й.
Когда элемент добавляется в список - блокбилдер перерисовывает виджет, но самый первый (нижний) добавленный элемент дублируется, а новый добавляется только если полистать список вверх-вниз.
4й (появляется если поскроллить список)
3й
2й
1й
0й
0й.
Дубликат пропадает если закрыть и снова открыть страницу.
Данные проверял, они в порядке, дубликатов через блок не приходит. На всякий случай пробовал даже прогонять список через сет, мало ли. Но нет, с данными порядок, что то я не так делаю с виджетами. Знает кто нить в чем проблема может быть? Код показать, к сожалению не могу. Заранее спасибо за помощь :)
Сразу disclaimer Дочитвл только до строчки про дублирование .. Если дата из быка, и там не убираете дубликаты, то самое просое Set<T>вместо List<T>
Ну если хотите List дальше использовать как тип, то , как вариант toSet().toList()
Пробовал :) с данными порядок, в самом списке дубликатов нет, прикол именно с виджетами. Выше уже ответили про ключи, очень похоже на верное решение, но пока не могу проверить.
Вообще стоит залогировать и посмотреть на каком этапе длинна на единицу увеличивается (дубль последнего i)
Проверяйте ответ (тип и длинну, если это массив) на каждом этапе от получения raw data до получения состояния последнего от вашего блока..... Это очень странно.....
Обсуждают сегодня