У меня следующая архитектура:
Код: Выделить всё
Page A ->
Page B {
PageView[Pages]
}
Код: Выделить всё
return BlocBuilder(
builder: (context, estimationState) {
final request = estimationState.estimationRequest;
_checkFields(screens[estimationState.currentStep - 1]);
final int totalSteps = screens.length - 1;
final isLastPage = estimationState.currentStep == screens.length;
return Scaffold(
body: Padding(
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
child: Column(
children: [
Expanded(
child: PageView(
physics: const NeverScrollableScrollPhysics(),
onPageChanged: (index) {
_setStep(index + 1);
},
controller: _pageViewController,
children: [
WidgetA,
WidgetB,
WidgetC,
],
),
),
Для навигации я использую goRouter , а на странице B я перемещаюсь с помощью goName. Если я оберну каркас страницы B в PopScope, он не будет инициировать onPopInvoked, когда я переключаюсь обратно.
Но он вызывается только тогда, когда я нажимаю кнопку «Назад» в appBar, чтобы вернуться на страницу. А.
Подробнее здесь: https://stackoverflow.com/questions/782 ... r-pageview