Флаттер setState из другого класса - PullRequest
0 голосов
/ 12 февраля 2020

Итак, у меня есть 2 класса

class MapsModel {
   MapsModel._();

   ...

   static void Function(VoidCallback) setState;

   static GoogleMap googleMap = new  GoogleMap(
      markers: markers,
      onMapCreated: (GoogleMapController controller) {
        setState((){
        log("Marker added");
        markers.add(
           Marker(
              markerId: MarkerId("<MARKER_ID>"),
              position: LatLng(45.726697, 25.521418)
             )
           );
        });
       },
    );
}

и

class MapPage extends StatefulWidget {
   MapPage({Key key}) : super(key: key);

   @override
   State<StatefulWidget> createState() => MapPageState();
}

class MapPageState extends State<MapPage> {

@override
Widget build(BuildContext context) {

MapsModel.setState = (VoidCallback callback){
  setState(() {
    callback();
   });
  };

 return Scaffold(
     body: MapsModel.googleMap
  );
 }
}

Итак, я хочу обновить маркеры карты из первого класса, используя пользовательскую функцию setState .

Проблема в том, что отображается даже сообщение: Marker Added, карта не добавляет маркер. Также при переходе на другую страницу и обратно добавляется маркер.

...