【发布时间】:2019-08-13 21:55:06
【问题描述】:
我有一个 Flutter 应用程序,我在其中使用 Google 地图小部件(刚刚更新到 0.4.0)在屏幕上显示一些标记。每个标记对应一个商店,并有一个带有商店名称的信息窗口。我希望当我们点击信息窗口时,会出现商店页面。
这似乎没有那么复杂,这是我所做的:
Marker marker = Marker(
consumeTapEvents: false,
markerId: MarkerId(markerId.toString()),
position:
LatLng(truck.situation.position.lat, truck.situation.position.long),
infoWindow: InfoWindow(
title: truck.name,
onTap: ({BuildContext context}) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TruckScreen(truck: truck)
),
);
},
),
);
但是当我点击窗口时,什么也没有发生。
我想我找到了问题所在:当我们点击信息窗口时,方法 _handleMethodCall(MethodCall call) 在 controller.dart 文件中被调用:
case 'infoWindow#onTap':
_googleMapState.onInfoWindowTap(call.arguments['markerId']);
break;
上下文不作为参数传递,因此,当我进入调用 Navigator.push 的 onTap 方法时,上下文为空。
有人知道如何解决这个问题吗?谢谢!
【问题讨论】:
标签: android google-maps dart flutter