У меня есть приложение Flutter, в котором я использую виджет Google Maps (только что обновленный до 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) вызывается в файле controller.dart:
case 'infoWindow#onTap':
_googleMapState.onInfoWindowTap(call.arguments['markerId']);
break;
Контекстне передается в качестве параметра, и поэтому, когда я захожу в метод onTap, где я вызываю Navigator.push, контекст равен нулю.
Кто-нибудь знает, как это исправить?Спасибо!