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

Posted

技术标签:

【中文标题】如何保持我的bottomNavigationBar Cubit BLoc Flutter的状态?【英文标题】:How to keep the state of my bottomNavigationBar Cubit BLoc Flutter? 【发布时间】:2021-06-20 16:56:17 【问题描述】:

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

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

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

我的地图块:

     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);

【问题讨论】:

【参考方案1】:

除非有其他东西触发了您未显示的页面上的重建,否则应该像将您在主页上使用的 AutomaticKeepAliveClientMixin 添加到所有其他屏幕一样简单。

【讨论】:

我试过了,但它一直在完全重绘。我认为这一定是集团和国家的问题。我添加了该代码以防您想到问题所在。 我明天会看看这个,但是当你不希望它们重建时,你还应该显示你为正在重建的页面所拥有的代码。

以上是关于如何保持我的bottomNavigationBar Cubit BLoc Flutter的状态?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:BottomNavigationBar在选项卡更改时重建页面

Flutter底部导航栏BottomNavigationBar页面状态保持解决方案

如何路由到页面,而不在颤动中删除 BottomNavigationBar?

如果我们在 GetX 上使用 bottomNavigationBar,如何使用内部导航

滚动时如何隐藏 BottomNavigationBar - Flutter

如何在 BLOC 的 Flutter 中的 BottomNavigationBar 中设置 currentIndex?