使用 PageView 的 BottomNaviationBar 中的 GoogleMap 小部件滚动问题以保持状态
Scrolling issue with GoogleMap widget in BottomNaviationBar with PageView for persisting state
@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 以使地图按预期工作,状态的持久化就会消失,因为根据文档,我应该将脚手架的主体包裹在 PageView 小部件中,以便 AutomaticKeepAliveMixin 工作。
现在我的问题是如何实现两者兼而有之?我卡住了。我已经尝试实现其他状态持久化技术,如索引堆栈和 pagekeystorage,但没有成功 :( 任何帮助将不胜感激!谢谢!
垂直滚动有效,但当我尝试在我的地图中横向滚动时,综合浏览量优先,只是滚动到新页面,如下所示:
PageView 有一个物理机制 属性,您可以使用它来控制它如何响应用户在其上滑动而滚动。如果您分配 NeverScrollableScrollPhysics(),它将不可滚动。
@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 以使地图按预期工作,状态的持久化就会消失,因为根据文档,我应该将脚手架的主体包裹在 PageView 小部件中,以便 AutomaticKeepAliveMixin 工作。
现在我的问题是如何实现两者兼而有之?我卡住了。我已经尝试实现其他状态持久化技术,如索引堆栈和 pagekeystorage,但没有成功 :( 任何帮助将不胜感激!谢谢!
垂直滚动有效,但当我尝试在我的地图中横向滚动时,综合浏览量优先,只是滚动到新页面,如下所示:
PageView 有一个物理机制 属性,您可以使用它来控制它如何响应用户在其上滑动而滚动。如果您分配 NeverScrollableScrollPhysics(),它将不可滚动。