敲击标测图标记上的 Flutter 在iOS设备中不起作用

zbdgwd5y  于 2022-12-30  发布在  Flutter
关注(0)|答案(1)|浏览(130)

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

  1. Flutter Map {
  2. layers: [
  3. // Layer map cluster marker ---> HERE
  4. MapCluster.getMapCluster(mapStateNotifier, mapState),
  5. ],
  6. children: [
  7. // map tile layer
  8. TileLayerWidget(),
  9. // Location user marker
  10. CircleLayerWidget(),
  11. // Compass marker
  12. MarkerLayerWidget(),
  13. ],
  14. }
  1. // inside method MapCluster.getMapCluster
  2. return MarkerClusterLayerOptions(
  3. // void Function(Marker)?
  4. onMarkerTap: (Marker marker) {
  5. // ---> HERE
  6. // show popup
  7. }
  8. );

我试过了
1.增加标记尺寸
1.移除其他图层,仅移除标记图层
1.Flutter标记集群 Package 中的搜索问题
我意识到,运行调试甚至没有跳转到断点内onMarkerTap方法,当我点击设备。有时它显示顺利,有时它如此滞后,即使我触摸了多少次,它不依赖于放大/缩小,转到后台或同步/异步。
因为只有iOS设备有问题,我认为在iOS中处理手势onTap时,2个包flutter map和flutter marker群集冲突,但我还没有找到任何证据。

dy2hfwbg

dy2hfwbg1#

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

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

溶液:

  • Compass小部件的单独状态管理
  • 第一次初始化,暂停并使用flag变量适当地恢复。

相关问题