Как сделать просмотр страницы, чтобы показывать один и тот же виджет (без потери состояния), бесконечно при прокрутке — порхание

#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 на большее значение.