问题描述
我遇到的问题是,当我启动应用程序时,我的地图以一种方式出现,然后在从底部导航栏选项卡传递时,它会在我返回时完全重绘。
我认为是块和状态图的问题。
我需要知道解决方案是什么,以便它不会被重绘,也就是说,如果我将地图留在某个位置并进入选项卡,当我回来时,它会查看我离开它的位置。
我的地图区块:
class MapaBloc extends Bloc<MapaEvent,MapaState> {
MapaBloc() : super(new MapaState());
GoogleMapController _mapController;
void initMapa(GoogleMapController controller) {
{
this._mapController = controller;
this._mapController.setMapStyle(jsonEncode(testMapTheme));
add(OnMapaListo());
}
}
void moverCamara(LatLng destino) {
final cameraUpdate = CameraUpdate.newLatLng(destino);
this._mapController?.animateCamera(cameraUpdate);
}
@override
Stream<MapaState> mapEventToState(MapaEvent event) async* {
if (event is OnMapaListo) {
yield state.copyWith(mapaListo: true);
}
}
}
我的地图事件:
@immutable
abstract class MapaEvent {}
class OnMapaListo extends MapaEvent {}
我的地图状态
@immutable
class MapaState {
final bool mapaListo;
MapaState({this.mapaListo = false});
MapaState copyWith({bool mapaListo}) =>
MapaState(mapaListo: mapaListo ?? this.mapaListo);
}
解决方法
除非有其他内容触发了您未显示的页面上的重建,否则应该像将您在主页上使用的 AutomaticKeepAliveClientMixin
添加到所有其他屏幕一样简单。