Слишком много refre sh в slverpersistentheader при срабатывании ChangeNotifiers - PullRequest
0 голосов
/ 26 мая 2020

У меня есть приложение flutter с SliverPersistentHeader (SPH, через делегата, действующего как AppBar), которое должно отображать обновленные c баллы / баллы / кредиты, указанные пользователем. Это значение периодически пересчитывается в фоновом режиме, и я обновляю его через ChangeNotifier и ChangeNotificationProvider, обернутые вокруг сборки виджетов в делегате Sliver. ; но он также перерисовывает все содержимое ленты ниже и сбрасывает положение прокрутки.

У меня есть другие элементы Sliver под заголовком (например, сетка), в которых мой redr aws работает должным образом и не меняет прокрутку всей ленты.

Любые идеи / подсказки, как Я могу обновить sh SPH, не меняя прокрутку ниже?

Быстрое обновление: SPH содержит стек с позиционированными виджетами; на случай, если это может иметь значение.

1 Ответ

0 голосов
/ 26 мая 2020

ок; моя ошибка в «бизнес-модели» ... объект, который я использовал для хранения оценки, также содержал другие списки, показанные в основном режиме прокрутки. Как только я обновил счет и вызвал notificationListener (), он изменил aws счет и списки и сбросил положение прокрутки вверх.

Я вынул значения, которые хочу показать в SPH, в другой объект и отреагировать перерисовкой только в этом экземпляре. Этот объект-оболочка по-прежнему является элементом бизнес-объекта root приложения.

Это предотвращает перерисовку всего приложения, которая вызвала нежелательную прокрутку положения вверх.

Итак, проблема была не с Sliver, а с моим отсутствием опыта работы с провайдером и деревом виджетов flutter. Узнавать каждый день что-то новое.

...