@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
children: _children,
controller: pageController,
onPageChanged: onPageChanged,
),
bottomNavigationBar: BottomNavigationBar(
onTap: onTabTapped,
backgroundColor: Colors.grey[100],
currentIndex: _currentIndex,
items: [
BottomNavigationBarItem(
icon: new Icon(Icons.navigation),
label: 'Track',
),
BottomNavigationBarItem(
icon: new Icon(Icons.settings),
label: 'Settings',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
)
],
),
);
}
void onTabTapped(int value) {
pageController.jumpToPage(value);
}
void onPageChanged(int index) {
setState(() {
_currentIndex = index;
});
}
Привет, я прикрепил свой метод сборки моего виджета с отслеживанием состояния моего простого приложения flutter к изображению кода ниже. Я использую нижнюю панель навигации и хочу, чтобы мои виджеты оставались в дереве при переключении между нижними страницами. Таким образом, я реализовал AutomaticKeepAliveMixin вместе с контроллером страницы и телом страницы, чтобы состояния сохранялись. теперь моя проблема,
- Моя первая страница - это виджет карт Google, который показывает информацию для отслеживания. Из-за просмотра страницы, когда я пытаюсь посмотреть на другое место на карте, проводя пальцем в направлении пункта назначения, иногда смахивание справа налево на карте приводит к тому, что просмотр страницы запускает переключение страницы.
- Если я удалю просмотр страницы, чтобы карта работала должным образом, сохранение состояний исчезнет, потому что, согласно документации, у меня должно быть тело моего каркаса, заключенного в виджет PageView для работы AutomaticKeepAliveMixin.
Теперь мой вопрос: как мне добиться того, что делает и то, и другое? Я застрял. Я попытался реализовать другие методы сохранения состояния, такие как индексированный стек и pagekeystorage, но безуспешно :( Любая помощь приветствуется! Спасибо!
Вертикальная прокрутка работает, но когда я пытаюсь прокрутить карту вбок, просмотр страницы имеет приоритет и просто прокручивается на новую страницу следующим образом: