Как получить предыдущий индекс в PageView onPageChanged? В настоящее время я могу получить текущий индекс при изменении страницы с помощью следующего кода:
PageView(
children: <Widget>[
SomeView(),
SomeOtherViews(),
SomeOtherViews(),
],
controller: _pageViewController,
onPageChanged: _onPageViewChange,
);
_onPageViewChange(int page) {
print("Current Page: " + page.toString());
}
Есть ли у флаттера встроенная функция для этого? Или я должен просто вручную сохранить страницу как ссылку на предыдущую страницу?
Уменьшите страницу на 1 и сохраните в переменной класса (вызовите setState и измените) или в локальной переменной. Если текущая страница равна 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");
}
Вы можете использовать PageView.builder, он даст вам индекс страницы.
PageView.builder(
itemBuilder: (context, index) {
// index gives you current page position.
return _buildPage();
},
itemCount: listItemCount, // Can be null
)