如何保持我的bottomNavigationBar Cubit BLoc Flutter 的状态?

问题描述

我遇到的问题是,当我启动应用程序时,我的地图以一种方式出现,然后在从底部导航栏选项卡传递时,它会在我返回时完全重绘。

我认为是块和状态图的问题。

我需要知道解决方案是什么,以便它不会被重绘,也就是说,如果我将地图留在某个位置并进入选项卡,当我回来时,它会查看我离开它的位置。

我的地图区块:

     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 添加到所有其他屏幕一样简单。