resolveRootOverlay static method
Resolve the best root overlay from a context or the app root.
Implementation
static OverlayState? resolveRootOverlay(BuildContext? context) {
if (context != null) {
// Prefer the true root overlay when available.
final rootOverlay = Overlay.maybeOf(context, rootOverlay: true);
if (rootOverlay != null && rootOverlay.mounted) return rootOverlay;
// Fallback to the nearest overlay in unusual embed cases.
final nearestOverlay = Overlay.maybeOf(context, rootOverlay: false);
if (nearestOverlay != null && nearestOverlay.mounted) {
return nearestOverlay;
}
}
final rootElement = WidgetsBinding.instance.rootElement;
if (rootElement == null) return null;
final rootOverlay = Overlay.maybeOf(rootElement, rootOverlay: true);
if (rootOverlay != null && rootOverlay.mounted) return rootOverlay;
OverlayState? found;
void visit(Element element) {
// DFS search for an OverlayState as a last-resort fallback.
if (found != null) return;
if (element is StatefulElement && element.state is OverlayState) {
final overlayState = element.state as OverlayState;
if (overlayState.mounted) {
found = overlayState;
return;
}
return;
}
element.visitChildElements(visit);
}
visit(rootElement);
return found;
}