jbx*_*dev 13 android google-maps google-maps-android-api-2 flutter google-maps-flutter
我遇到了以下问题:我的 Flutter 应用程序使用 GoogleMap。地图最初加载得很好。但是,如果我将应用程序置于后台并稍后恢复,则地图将保持空白。Google 徽标仍然显示,就像未指定 API 密钥时发生的情况一样。我的多边形叠加层也没有显示。
该行为不能可靠地重现。有时,应用程序在后台运行数小时后地图加载良好,有时几分钟后地图是空白的。到目前为止,我只在 Android 上看到过这种行为。
没有指示错误的特定日志输出。
任何想法如何解决/解决这个问题?
我在这里提交了一个截图问题:https : //github.com/flutter/flutter/issues/40284
编辑 1: 我能够使用 GoogleMap 作为根小部件重现它,并且没有任何多边形/特征叠加。此外,我发现在某个点疯狂放大会“重新激活”地图(突然地图再次变得可见)。这可能是底层 Android Google Maps SDK 的已知问题吗?
编辑 2: 我发现地图仍在反应(例如点击/手势侦听器仍然触发)。此外,地图并不是真的空的,它只是变得半透明,所以屏幕会显示地图后面的任何小部件。
小智 19
我发现如果您点击标记或更改样式,地图会重新渲染
class TheWidgetThatHasTheMap with WidgetsBindingObserver {
//...your code
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
controller.setMapStyle("[]");
}
}
}
Run Code Online (Sandbox Code Playgroud)
不是核心问题的解决方案,但我能够通过创建插件项目的分支并修改 GoogleMapController.java 来解决此错误,如下所示:
@Override
public void onActivityResumed(Activity activity) {
if (disposed || activity.hashCode() != registrarActivityHashCode) {
return;
}
mapView.onResume();
// Workaround for https://github.com/flutter/flutter/issues/40284
// This apparently forces a re-render of the map.
if (googleMap != null) {
googleMap.setMapType(googleMap.getMapType());
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在每个恢复事件中,地图都会重新渲染。
| 归档时间: |
|
| 查看次数: |
5310 次 |
| 最近记录: |