debug模式enable为false时重建导致app异常卡死
Jensonss opened this issue · 0 comments
Jensonss commented
Steps to Reproduce 复现步骤
- debug模式未启动ume:
final openUme = false.obs;
runApp(Obx(() { return UMEWidget( child: MyApp(), enable: openUme.value, ); }));
- 使用
Get.updateLocale(Locale.fromSubtags(languageCode: val));
切换语言
Error log 错误日志
异常原因:'package:flutter/src/widgets/overlay.dart': Failed assertion: line 147 pos 12: '_overlay != null': is not true.
原因
未启动ume时,_UMEWidgetState
的OverlayEntry _overlayEntry = OverlayEntry(builder: (ctx) => Container());
虽然有值,但是没有插入显示,所以_overlayEntry
属性OverlayState? _overlay;
为空的。
但是当重建时执行了void _removeOverlay() => _overlayEntry.remove();
,
然后调用了assert(_overlay != null);
这里debug模式断言失败导致app异常卡死。
我本地修改_overlayEntry
为可空就没问题了。
class _UMEWidgetState extends State<UMEWidget> {
// OverlayEntry _overlayEntry = OverlayEntry(builder: (ctx) => Container());
OverlayEntry? _overlayEntry ;
}