Как сделать так, чтобы виджет Google Map повторно отображался при изменениях, внесенных контроллерами карты?
@override
Widget build(BuildContext context) {
return GoogleMap(
onMapCreated: _onMapCreated,
options: GoogleMapOptions(
compassEnabled: true,
cameraPosition: CameraPosition(
target: LatLng(-36.8446085, 174.7547239),
zoom: 15.0,
),
),
);
}
Метод обновляется с помощью контроллера карты, чтобы добавить маркер и анимировать масштабирование в соответствии с текущим местоположением пользователя. Этот метод запускается FAB, вызывающим StreamController
в родительском виджете этого виджета рендеринга карты Google.
void _populateUserLocation() {
_getLocation().then((location) {
setState(() {
userLocation = LatLng(location['latitude'], location['longitude']);
});
});
_mapController.addMarker(
MarkerOptions(
position: userLocation,
infoWindowText: InfoWindowText("!", "Your are here"),
)
);
_mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: userLocation,
tilt: 50.0,
zoom: 20.0,
)
)
);
}
В настоящее время это работает, как и предполагалось, только на втором нажатии FAB. Это означает, что карта не отображается соответствующим образом с изменениями, внесенными контроллером карты.