Приведенный ниже фрагмент кода находится в примере приложения в пакете Google Flutter (https://pub.dartlang.org/packages/google_maps_flutter) в файле place_marker.dart):
void _updateSelectedMarker(MarkerOptions changes) {
controller.updateMarker(_selectedMarker, changes);
}
void _onMarkerTapped(Marker marker) {
if (_selectedMarker != null) {
_updateSelectedMarker(
const MarkerOptions(icon: BitmapDescriptor.defaultMarker),
);
}
setState(() {
_selectedMarker = marker;
});
_updateSelectedMarker(
MarkerOptions(
icon: BitmapDescriptor.defaultMarkerWithHue(
BitmapDescriptor.hueGreen,
),
),
);
}
Я полагаю, что ваш способон настроен в настоящий момент, вы щелкаете по информационному окну, связанному с ранее существующим маркером, и это запускает создание другого маркера без «позиции» (т. е. со значением LatLng, которое требуется для объектов маркера), но имеет информационное окноСвойства текста. Это объясняет, почему ничего не происходит, когда вы нажимаете на информационное окно, это, по сути, создание маркера и его нигде, что означает, что нигде не будет отображаться соответствующий текст информационного окна.
Я считаю,логика, которую вы хотите реализовать, заключается в следующем: когда пользователь нажимает на информационное окно, он должен инициировать обновление уже существующего маркера. Для этого вы можете реализовать нечто похожее на фрагмент кода, который я опубликовал выше, за исключением использования onInfoWindowTapped вместоиз onMarkerTapped.