Я не понимаю, как работает Flutter Provider, я пытаюсь изменить тему GoogleMap с помощью кнопки, но карта не перестраивается при изменении значения.
@override
Widget build(BuildContext context) {
final String _theme = Provider.of<MapTheme>(context).theme;
return Stack(
children: <Widget>[
Text(Provider.of<MapTheme>(context).theme),
GoogleMap(
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
controller.setMapStyle(_theme);
},
),
],
);
}
Но если я использую то же значение внутри текстового виджета я вижу изменение значения на экране, когда я нажимаю sh кнопку.
Почему текстовый виджет перестраивается, а не виджет GoogleMap?
РЕДАКТИРОВАТЬ: Если Я добавляю это в начале метода сборки, он работает как положено. Но я не думаю, что это хорошее решение
Provider.of<MapTheme>(context).addListener(() async {
(await _controller.future).setMapStyle(_theme);
setState(() {});
});