【发布时间】:2019-06-08 00:25:47
【问题描述】:
我正在使用Google Maps for Flutter 小部件。 在我的应用程序中,地图是通过 BottomNavigationBar 的选项卡之一显示的。
我有以下问题:
- 用户在地图标签上
- 用户更改选项卡(通过点击另一个选项卡)
- [问题] 当用户返回地图的选项卡时,地图会重绘。
我想在用户离开地图选项卡时保持地图原样,以便他稍后返回时可以继续使用它。
试图:
- 使用 PageStorage - 没有成功。
- 制作类似 Singletone of Map 状态的东西 - 没有成功。
- 使用 AutomaticKeepAliveClientMixin (saw here),看起来很有希望,但仍然没有成功。
(我承认我可能做错了什么)
最后一次尝试的代码:
class MapScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => MapScreenState();
}
class MapScreenState extends State<MapScreen> with AutomaticKeepAliveClientMixin {
GoogleMapController mapController;
@override
bool get wantKeepAlive => true;
@override
Widget build(BuildContext context) {
super.build(context);
return Scaffold(
appBar: AppBar(
title: const Text("Map"),
),
body: GoogleMap(
onMapCreated: _onMapCreated,
)
);
}
void _onMapCreated(GoogleMapController controller) {
mapController = controller;
updateKeepAlive();
}
}
所以,我只需要一种方法来保持 MapScreen 处于活动状态并保持不变,或者以某种方式存储其状态并在用户返回 MapScreen 时恢复它。或者其他可以解决问题的方法。
【问题讨论】:
-
Diegos 回答的一些额外想法。您可以使用 Offstage 小部件,并在导航时将小部件移出屏幕并返回。我不知道 google_maps 插件,但您能否单独存储相机位置并将其包含在 google_maps 小部件中作为示例解决方法,如果这是每次重置并导致问题的原因。
-
@Ian 尝试了 Offstage 小部件,仍然是相同的行为。问题不仅在于相机位置,还在于加载地图所需的时间。我现在可能会存储相机位置(以及其他选项,如果需要),但如果我找到或提出解决方案,我会在这里发布。
-
您已经找到解决方案了吗?我也面临这个问题。
-
你有没有找到解决这个@AQRC的方法
-
@TheTokenizer 我完全停止了我的颤振项目的工作,所以答案是否定的,不幸的是我没有找到解决方案
标签: google-maps dart flutter