Flutter中如何在PageView中正确使用GoogleMap
Posted
技术标签:
【中文标题】Flutter中如何在PageView中正确使用GoogleMap【英文标题】:How to Properly use GoogleMap in PageView in Flutter 【发布时间】:2021-04-04 16:14:46 【问题描述】:下面是我Google Map
flutter
中的代码:
GoogleMap(
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
Factory<OneSequenceGestureRecognizer>(
() => EagerGestureRecognizer(),
),
].toSet(),
mapType: MapType.normal,
zoomGesturesEnabled: true,
myLocationButtonEnabled: true,
myLocationEnabled: true,
markers: _markers,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller)
_controller = controller;
isMapCreated = true;
changeMapMode();
,
);
此代码位于PageView
小部件之一中。所以问题是如果我保持低于代码gestureRecognizers
,我无法滑动到其他页面。
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
Factory<OneSequenceGestureRecognizer>(
() => EagerGestureRecognizer(),
),
].toSet(),
如果我删除它,我可以在页面上滑动,但是我无法正确使用地图。做什么?如何解决这个问题?我知道EagerGestureRecognizer
是GestureDectors
中的佼佼者。请指导我解决这种情况。
【问题讨论】:
【参考方案1】:你不能在一个页面中同时使用这两种手势,它会发生冲突并且没有好的解决方案和用户体验。您可以只使用 PageController 进行页面浏览,以通过左右按钮控制页面滚动。
记得在页面视图中禁用物理滚动:NeverScrollableScrollPhysics(),
【讨论】:
【参考方案2】:您可能想要的是 PanGestureRecognizer,它允许在您的 PageView 屏幕之间来回滑动(即使您从地图小部件中滑动)。如果您在地图小部件上执行拖动,则地图小部件会滚动。不过,我仍然觉得它有点意外,要拖动地图,您必须向上/向下拖动一点,然后它才能识别左/右拖动(假设您的 PageView 方向是水平的)。
不过,它还是比 EagerGestureRecognizer IMO 好得多。
gestureRecognizers:
Factory<PanGestureRecognizer>(() => PanGestureRecognizer()),
【讨论】:
以上是关于Flutter中如何在PageView中正确使用GoogleMap的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中使用 PageView 创建轮播(滑动动画)?
带有 PageView 构建器的 Flutter 中的 Tinder swiper