web-dev-qa-db-ja.com

背景から再開した後、Flutter GoogleMapが空白になる

次の問題が発生しています。FlutterアプリでGoogleMapを使用しています。マップは最初は問題なく読み込まれます。ただし、アプリをバックグラウンドに配置してしばらくしてから再開すると、マップは空白のままです。 APIキーが指定されていない場合に発生するように、Googleロゴは引き続き表示されます。ポリゴンオーバーレイも表示されません。

動作は確実に再現可能ではありません。アプリがバックグラウンドで数時間実行された後、マップが正常に読み込まれる場合や、数分後にマップが空白になる場合があります。これまでのところ、Androidでのみこの動作を確認しました。

エラーを示す特定のログ出力はありません。

これを修正/回避する方法はありますか?

ここにスクリーンショットの問題を提出しました: https://github.com/flutter/flutter/issues/40284

EDIT 1:ルートウィジェットとしてGoogleMapを使用し、ポリゴン/機能のオーバーレイを使用せずにこれを再現できました。また、ある時点で乱暴にズームインすると、マップが「蘇生」することがわかりました(突然、マップが再び表示されるようになります)。これは、基になるAndroid Google Maps SDKの既知の問題ですか?

編集2:マップがまだ反応していることがわかりました(例:タップ/ジェスチャーリスナーがまだトリガーしています)。また、マップは実際には空ではなく、半透明になるだけなので、マップの背後にあるウィジェットが画面に表示されます。

4
jbxbergdev

中心的な問題の解決策ではありませんが、プラグインプロジェクトのフォークを作成し、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());
    }
  }

これで、すべての再開イベントで、マップが再レンダリングされます。

2
jbxbergdev