【发布时间】:2018-12-28 20:18:38
【问题描述】:
entry 是 OverlayEntry 类的一个实例
entry?.remove();
错误
Package:flutter/src/widgets/overlay.dart': Failed assertion: line 133 pos 12: '_overlay != null':
【问题讨论】:
entry 是 OverlayEntry 类的一个实例
entry?.remove();
错误
Package:flutter/src/widgets/overlay.dart': Failed assertion: line 133 pos 12: '_overlay != null':
【问题讨论】:
如果没有将 OverlayEntry 插入 Overlay 并且您尝试调用 remove 方法,您将收到该错误:Failed assertion: '_overlay != null'。所以在删除条目之前,添加一个条件来判断它是否合法。它更像是一个 hack 代码,您可以添加一个变量,如 isEntryNotNull 以方便和易于理解。而当你在 Overlay 中插入一个新的 OverlayEntry 时,将它重新赋值给 entry 变量,那么条件就可以正常工作了。
if (entry != null) {
entry.remove();
entry = null;
}
【讨论】:
entry 变量,那么条件就可以正常工作了。
已解决
经过大量研究尝试后,我发现了一个简单的解决方案。
entry?.remove();
entry = null;
【讨论】:
你可以检查叠加层是不是这样挂载的
if (floatingDropdown?.mounted ?? false) {
floatingDropdown?.remove();
}
【讨论】:
试试这个,它对我有用
if (overlayEntry != null && overlayEntry.mounted) {
overlayEntry?.remove();
overlayEntry = null;
}
【讨论】: