Как получить из индекса в просмотре страницы onPageChanged в Flutter?

#dart #flutter #pageviews

#dart #flutter #просмотры страниц

Вопрос:

Как мне получить предыдущий индекс в PageView onPageChanged в Flutter? В настоящее время я могу получить текущий индекс при изменении страницы с помощью следующего кода:

 PageView(
      children: <Widget>[
        SomeView(),
        SomeOtherViews(),
        SomeOtherViews(),
      ],
      controller: _pageViewController,
      onPageChanged: _onPageViewChange,
    );

_onPageViewChange(int page) {   
    print("Current Page: "   page.toString());
  }
  

Есть ли у flutter какая-либо встроенная функция для этого? Или я должен просто вручную сохранить страницу в качестве ссылки на предыдущую страницу?

  • Да, я думал об этом, я просто хочу знать, есть ли более быстрый способ без необходимости создавать переменную

Ответ №1:

Уменьшите страницу на 1 и сохраните в переменной класса (вызовите setState amp; modify) или локальной переменной. Если для текущей страницы установлено значение 0, previousPage равно totalPageCount — 1.

 _onPageViewChange(int page) {   
  print("Current Page: "   page.toString());
  int previousPage = page;
  if(page != 0) previousPage--;
  else previousPage = 2;
  print("Previous page: $previousPage");
}
  

Ответ №2:

Вы можете использовать PageView.builder, это даст вам индекс страницы.

 PageView.builder(
  itemBuilder: (context, index) {
    // index gives you current page position.
    return _buildPage();
  },
  itemCount: listItemCount, // Can be null
)