繁体   English   中英

Flutter map 标记在 iOS 设备中不起作用

[英]Flutter on tap map marker not working in iOS device

当使用flutter_mapflutter_map_marker_cluster构建带有标记的 map 时,我遇到一个问题,有时但在相当长的时间内 onTap 不再工作,但它只发生在 iOS 设备中。 在android和iOS模拟器上正常。

Flutter Map {
   layers: [
        // Layer map cluster marker ---> HERE
        MapCluster.getMapCluster(mapStateNotifier, mapState),
      ],
   children: [
        // map tile layer
        TileLayerWidget(),

        // Location user marker
        CircleLayerWidget(),

        // Compass marker
        MarkerLayerWidget(),
      ],
}
// inside method MapCluster.getMapCluster 
return MarkerClusterLayerOptions(
    // void Function(Marker)?
    onMarkerTap: (Marker marker) {
        // ---> HERE
        // show popup
    }

);

我试过了

  1. 增加标记的大小

  2. 移除其他层,仅标记层

  3. 在 Flutter 标记簇 package 中搜索问题

我意识到当我点击设备时,运行调试甚至不会跳转到 onMarkerTap 方法内的断点。 有时它显示流畅,有时即使我触摸了多少次它也会如此滞后,它不依赖于放大/缩小,go 到背景或同步/异步。

因为只有 iOS 设备有问题我认为 2 个包 flutter map 和 flutter 标记集群在处理 iOS 中的 onTap 手势时发生冲突,但我还没有找到任何证据。

最后,我想通了。 原因是在使用 FlutterCompass 时,我在init state中调用了 StreamSubscription,它总是在旋转或摇动手机时被调用。

  _compassStream = FlutterCompass.events?.listen((event) {
       // update state with new value event.heading
  });

解决方案:

  • 罗盘widget单独管理state
  • 第一次初始化,暂停并使用标志变量适当地恢复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM