#flutter #dart #flutter-pageview
Вопрос:
У меня есть одна страница. Я хочу показывать одну и ту же страницу снова и снова, не перестраивая ее снова на следующей странице или не теряя ее состояние при прокрутке ( бесконечно).
Вот приведенный ниже код (Каждый раз, когда я перехожу на следующую страницу, виджеты[0] восстанавливаются. Я этого не хочу. Я хочу использовать виджеты[0] с предыдущей страницы, не перестраивая новую страницу.]
Widget widgets = [Page1()];
PageView.builder(
controller: PageController(),
itemBuilder: (BuildContext context, int itemIndex) {
return widgets[0];
},
),
Я пробовал использовать AutomaticKeepAliveClientMixin
, но он сохраняет состояние предыдущей страницы при прокрутке назад, но он перестраивает новый виджет каждый раз, когда я перехожу на новую страницу. Я хочу повторно использовать предыдущий виджет на новой странице.
Комментарии:
1. см. medium.com/flutter/… — они говорят: «Нередко можно видеть, как новые разработчики Flutter создают ссылки на виджеты, которые, как они знают, со временем не изменятся, и помещают их в состояние, чтобы они не были уничтожены и перестроены. Не делай этого».
2. @pskink Я тоже не могу понять это заявление и статью.
3. в принципе, вам не следует беспокоиться о том, что
build()
метод вызывается каждый раз, когда вы переходите на следующую страницу4. @pskink Я создал и уничтожил виджет на новой странице. Но дело в том, что мое приложение становится слишком нервным, когда я перехожу на другую страницу из-за создания тяжелых виджетов при переходе на новую страницу. Я оптимизировал страницу для создания максимально. Но виджеты на новых страницах слишком требовательны. Вот почему я решил повторно использовать виджет(InAppwebView) и ссылаться на него при изменении новой страницы. Мое приложение слишком уж дерганое.
5. почему
build
метод занимает так много времени? вы создаете там виджеты 1000-х годов? обратите внимание, чтоbuild
это не должно содержать кода побочных эффектов — он должен просто создавать и возвращать некоторые виджеты
Ответ №1:
Вы можете попробовать Просмотр страниц Дети и автоматическое сохранение.
Комментарии:
1. Я не могу заставить бесконечную прокрутку работать в режиме просмотра страниц. Есть ли какой-нибудь обходной путь для этого?
2. Если я использую метод Детей, у меня нет хорошего способа. Если вы используете метод построителя, вы можете установить значение ItemCount на большее значение.