Есть bottom bar, который использует pageview. И на одной из страниц тоже используется pageview - так вот он почему-то сбрасывается при переходе между страницами, хотя используется контроллер, который инициализирован в провайдере. Но сбрасывается только при переходе между страницами из BottomBar. Если гулять по страницам через Navigator.push / Navigator.pop, то ничего не сбрасывается. Из-за чего может быть такое поведение?
экран со вторым pageview закрывается, вызывается dispose и контроллер теряет свой стейт. Потом при повторном открытии он инициализируется заново
Используй PageStorageKey для сохранения позиции скролла
Так у меня контроллер в провайдере инициализирован. Dispose для него не прописывал. Всё равно диспоузится?
если у тебя этот провайдер создается только когда открывается второй экран, то в любом случае стейт будет теряться после закрытия этого экрана
Этот провайдер создаётся при запуске приложения и живёт, пока не закроется приложение.
я надеюсь он не используется на обоих экранах с pageview?
В общем и целом, не знаю, почему так работает. Решил этот вопрос костыльно. При скроле записываю индекс нового виджета в провайдер. А сам контроллер инициализирую не в провайдере, а на нужном экране, передавая ему initialPage, который вытягиваю из провайдера. Но мне прям очень интересно, почему контроллер диспоузится в провайдере.
Обсуждают сегодня