我有一个Flutter应用程序,正在使用Google Maps小部件(刚刚更新为0.4.0)在屏幕上显示一些标记。每个标记对应一个商店,并具有一个带有商店名称的信息窗口。我希望当我们点击信息窗口时,会显示商店页面。
它似乎并不复杂,这是我所做的:
UIViewPropertyAnimator
但是当我单击窗口时,什么也没有发生。
我想我发现了问题所在:当我们单击信息窗口时,在controller.dart文件中调用了_handleMethodCall(MethodCall call)方法:
animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)
上下文未作为参数传递,因此,当我进入调用Navigator.push的onTap方法时,上下文为null。
有人知道如何解决此问题吗?谢谢!
答案 0 :(得分:0)
onTap方法未传递上下文 google_maps_flutter/lib/src/marker.dart#L45 并且由于您要将上下文参数添加到onTap方法回调中,因此它会覆盖build方法中的上下文值。
您需要从构建方法中获取上下文。只需删除({BuildContext context})
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: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TruckScreen(truck: truck)),
);
},
),
);