Flutter Provider перестраивает виджет при изменении - PullRequest
0 голосов
/ 17 марта 2020

Я не понимаю, как работает 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(() {});
});
...