#flutter #dart #state #state-management #flutter-pageview
Вопрос:
В моем приложении у меня есть BottomBar
приложение, которое обрабатывает мои Pages
. Прямо сейчас я просто справляюсь с Callbacks
этим вот так:
return Scaffold(
body: PageView(
controller: tabController,
children: <Widget>[
HomeScreen(),
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => ScannerModel(),
),
ChangeNotifierProvider(
create: (context) => ArticleSearchModel(),
),
],
child: ScanPage(),
),
SettingsScreen(
packageInfo: _packageInfo,
),
],
physics: NeverScrollableScrollPhysics(),
onPageChanged: (index) => setPageColor(index, context),
),
),
bottomNavigationBar: FABBottomAppBar(
items: [
FABBottomAppBarItem(
iconUrl: 'images/bottom_bar_icons/home.svg'),
FABBottomAppBarItem(
iconUrl: 'images/bottom_bar_icons/search.svg'),
FABBottomAppBarItem(
iconUrl: 'images/bottom_bar_icons/settings.svg'),
],
onPageChanged: (index) {
tabController.jumpToPage(index); // <- change page
},
);
}
Пока все идет хорошо, он работает совершенно нормально.
Проблема:
Пользователь также может перейти на другую страницу, нажав button
кнопку, которая вложена довольно глубоко внутри widget-tree
. Теперь я знаю, что мог бы использовать тонну обратных вызовов и передать информацию прямо наверх. Но для этого потребуется не менее 5 обратных вызовов, и это кажется довольно уродливым.
Итак: Как я могу изменить tabControllers
страницу из любого места простым способом?
Дайте мне знать, если вам понадобится дополнительная информация!