Class 从另一个类颤振设置状态

Class 从另一个类颤振设置状态,class,flutter,dart,setstate,Class,Flutter,Dart,Setstate,所以我有两门课 class MapsModel { MapsModel._(); ... static void Function(VoidCallback) setState; static GoogleMap googleMap = new GoogleMap( markers: markers, onMapCreated: (GoogleMapController controller) { setState((){

所以我有两门课

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)
             )
           );
        });
       },
    );
}
类映射模型{
地图模型;
...
静态无效函数(VoidCallback)设置状态;
静态谷歌地图谷歌地图=新谷歌地图(
标记:标记,
onMapCreated:(谷歌地图控制器){
设置状态(){
日志(“添加标记”);
markers.add(
标记(
markerId:markerId(“”),
位置:板条(45.726697,25.521418)
)
);
});
},
);
}

class MapPage扩展StatefulWidget{
MapPage({Key}):超级(Key:Key);
@凌驾
State createState()=>MapPageState();
}
类MapPageState扩展了状态{
@凌驾
小部件构建(构建上下文){
MapsModel.setState=(无效回调){
设置状态(){
回调();
});
};
返回脚手架(
正文:MapsModel.googleMap
);
}
}
所以我想做的是使用自定义的setState函数从第一个类更新地图标记


问题是,即使显示消息:Marker Added,地图也不会添加标记。另外,当我切换到另一页并返回时,会添加标记。

您可以添加回调函数。但是您不需要在那里使用static关键字。“只有静态成员才能在初始值设定项中访问”您应该将函数作为参数传递给另一个类,以使其像回调一样工作。按钮小部件中的onPressed call就是一个例子。“这样,当我更改页面时,不会每次都添加用户位置和标记。”对于每一个颤振应用程序来说都是完全可以的,除非你每秒做60次;-)选中
滑块
例如:每次移动手指时,都必须反复重建
滑块
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
  );
 }
}