Google maps 在flatter中保存谷歌地图状态

Google maps 在flatter中保存谷歌地图状态,google-maps,flutter,Google Maps,Flutter,所以我基本上有一个有三个标签的应用程序。在其中一个上面,我有一个带有相应标记的谷歌地图和一个带有基于位置的Firestore查询的侦听器。选择该选项卡后,附近的元素将被查询并显示在地图上 但是,当我更改选项卡并再次返回映射时,将再次设置映射、侦听器和所有标记(因为调用了initState()和dispose()) 选择页面时,保存地图上的所有状态并继续地图上的上一个状态的最佳方式是什么 我读过一些关于Redux和BloC的文章,这是我在这里需要的模式吗?如果是的话,这如何应用到谷歌地图上?我也有

所以我基本上有一个有三个标签的应用程序。在其中一个上面,我有一个带有相应标记的谷歌地图和一个带有基于位置的Firestore查询的侦听器。选择该选项卡后,附近的元素将被查询并显示在地图上

但是,当我更改选项卡并再次返回映射时,将再次设置映射、侦听器和所有标记(因为调用了
initState()
dispose()

选择页面时,保存地图上的所有状态并继续地图上的上一个状态的最佳方式是什么


我读过一些关于Redux和BloC的文章,这是我在这里需要的模式吗?如果是的话,这如何应用到谷歌地图上?

我也有同样的问题,Flutter基本上是每次你更改页面时都重新加载你的谷歌地图页面。我使用IndexedStack解决了这个问题。因此,我所有的页面都在堆栈中,它们不会重新加载。我不确定这是否是最好的方法,但它是有效的

 child: new IndexedStack(
    children: _pages,
    index: widget.currentItem,
  ),

IndexedStack仅显示堆栈的索引项,但所有项都在堆栈中,即使它们未显示,因此更改选项卡时不会重新加载它们。根据选项卡索引的索引,使用setState…

更改currentItem。实际上,您可以使用AutomaticKepaLiveClientMixin强制颤振以保持小部件树处于活动状态,如下所示:

class LocationMapScreen extends StatefulWidget {
  @override
  _LocationMapScreenState createState() => _LocationMapScreenState();
}

class _LocationMapScreenState extends State<LocationMapScreen>
     with AutomaticKeepAliveClientMixin {
  @override
  bool get wantKeepAlive => true;

  // ....
}
class LocationMapScreen扩展StatefulWidget{
@凌驾
_LocationMapScreenState createState()=>\u LocationMapScreenState();
}
类_LocationMapScreenState扩展状态
使用AutomaticEpaLiveClientMixin{
@凌驾
bool get wantKeepAlive=>true;
// ....
}

请添加一些解释。这还不足以作为答案通过。