我们在 iOS 上的 Flutter 应用中运行的 Google 地图偶尔会崩溃。我附上了堆栈跟踪的屏幕截图。有问题的电话是[GMSMapView updateWithCamera]
。
我们的设置基本上是:
BlocProvider<MapScreenBloc>
→ GoogleMapsWidget
→ GoogleMaps
(最后一个是来自 google_maps_flutter
插件的实际 Google 地图小部件)
在创建 GoogleMaps
小部件时,我们将 bloc 的 onMapCreated
函数传递给构造函数参数,以便它存储 GoogleMapController
。我的猜测是,在某个时候我们正在调用 _mapController.animateCamera()
,但控制器已被破坏,但我不知道如何调试它。
有没有其他人遇到过这种情况?关于如何调试/修复它的任何建议?
答案 0 :(得分:2)
事实证明,谷歌地图的 iOS/Flutter 实现存在错误。我在这里为他们创建了一个 PR: https://github.com/flutter/plugins/pull/3426
事实证明,他们反复添加了 addObserver:
,当那个 keypath 最终更新时,观察者被调用了很多次,以至于操作系统强迫应用程序关闭,因为它认为应用程序进入了无限循环。