首页 > 解决方案 > 在ListView中滚动地图(MapBox)时如何避免滚动ListView

问题描述

当我滑动我的地图时,有时它会导致 ListView 滚动,所以我想找到这种情况的最佳解决方案。

我正在使用flutter_map包,它没有gestureRecognizers属性作为其他包,如mapbox_gl和google_maps我的应用程序结构:

 Scaffold(
    body: ListView(
          childred:[
            MapBox(), //[flutter_map package used here][1]
            GridView()
            ]
           )
         );

标签: flutterdartflutter-layout

解决方案


您应该在GoogleMapMapBoxgestureRecognizers上使用属性

使用此代码希望它会起作用:

 gestureRecognizers:
   <Factory<OneSequenceGestureRecognizer>>[
   Factory<OneSequenceGestureRecognizer>(
    () => EagerGestureRecognizer(),
   ),
].toSet(),

谷歌地图的例子:

  GoogleMap(
     zoomControlsEnabled: false,
     mapType: MapType.normal,
     initialCameraPosition: cameraPosition,
     onMapCreated: (GoogleMapController controller) {
       googleMapController.complete(controller);
     },
     onCameraMove: _onCameraMove,
     gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
     new Factory<OneSequenceGestureRecognizer>(
         () => new EagerGestureRecognizer(),
        ),
      ].toSet(),
    ),

MapBox 的示例:

MapboxMap(
   accessToken: MapsDemo.ACCESS_TOKEN,
   onMapCreated: onMapCreatedOne,
   onStyleLoadedCallback: () => onStyleLoaded(controllerOne),
   initialCameraPosition: CameraPosition(
      target: center,
      zoom: 11.0,
    ),
   gestureRecognizers:
      <Factory<OneSequenceGestureRecognizer>>[
        Factory<OneSequenceGestureRecognizer>(
       () => EagerGestureRecognizer(),
      ),
     ].toSet(),
   ),

推荐阅读