moo*_*der 8 google-maps dart flutter
在Flutter应用程序中,我有两个使用Google Map(由此库提供)的不同屏幕。
第一个的小部件结构是
支架-> ListView->可见性->中心-> SizedBox-> GoogleMap
第二屏是
脚手架->容器->列-> SizedBox-> GoogleMap
在两个屏幕上,我都设置了相同的地图设置,但是由于某些原因,在第一个屏幕上,地图没有响应任何触摸事件。
小智 13
我遇到了同样的问题,经过长时间的搜索,我找到了以下解决方案,因此它可以正常工作
GoogleMap(
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
new Factory<OneSequenceGestureRecognizer>(() => new EagerGestureRecognizer(),),
].toSet(),)
Run Code Online (Sandbox Code Playgroud)
参考:
Jor*_*ies 11
您需要GoogleMap通过设置gestureRecognizers属性来告知小部件您希望其响应的手势,如下所示:
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
...
GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(0, 0),
),
gestureRecognizers: Set()
..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
);
Run Code Online (Sandbox Code Playgroud)
这不是特定于GoogleMap窗口小部件的,您需要对使用AndroidView/ UIKitView在幕后使用/ 处理手势的任何窗口小部件进行此操作。
我有类似的问题,但在我的情况下,地图位于条子列表内(实际上是 SliverPercientHeader )。添加平移手势有效,但我仍然无法垂直滚动地图。所以我也添加了它VerticalDragGestureRecognizer并且它按预期工作。
GoogleMap(
gestureRecognizers: Set()
..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
..add(Factory<VerticalDragGestureRecognizer>(
() => VerticalDragGestureRecognizer())),
// rest code
),
Run Code Online (Sandbox Code Playgroud)
注意:您还可以添加另一个gestureRecognizer,例如:ScaleGestureRecognizer。
我认为这取决于您的父窗口小部件支持哪种手势。
这种方式对我有用。我的地图在TabBarView > ListView > GoogleMap
GoogleMap(
gestureRecognizers: Set()
..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
..add(Factory<ScaleGestureRecognizer>(() => ScaleGestureRecognizer()))
..add(Factory<TapGestureRecognizer>(() => TapGestureRecognizer()))
..add(Factory<VerticalDragGestureRecognizer>(
() => VerticalDragGestureRecognizer())),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |