Flutter问题:点击地图Marker无法弹出AlertDialog
解决Marker点击弹窗不显示的问题
你的猜测有道理,MarkerLayer确实可能干扰GestureDetector的触摸事件传递,而且这里有个更可靠的方案:flutter_map的Marker组件本身就内置了onTap回调,不需要额外嵌套GestureDetector,后者很容易被图层的触摸处理逻辑覆盖。
修改代码如下:
return MarkerLayer( markers: pois.map( (poi) => Marker( width: 30.0, height: 30.0, point: LatLng(poi.latitude, poi.longitude), // 去掉GestureDetector,直接用Marker自带的onTap回调 onTap: () { showDialog( context: context, builder: (context) { return AlertDialog( title: const Text('title'), content: const Text('description'), actions: [ TextButton( child: const Text('Cancel'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); }, child: const Icon( Icons.location_pin, size: 40.0, color: Colors.red, ), ), ).toList(), );
额外检查点:
- 确认当前
context属于包含MaterialApp(或Navigator)的组件树,否则showDialog会找不到导航器 - 确保
Marker的width和height设置合理,点击区域要覆盖图标范围 - 如果问题仍存在,检查flutter_map版本,部分旧版本可能存在触摸事件bug,建议升级到稳定版
内容的提问来源于stack exchange,提问作者7feetal
相关产品推荐
相关产品推荐

