open<T> static method
Implementation
static Future<T?> open<T>(Widget widget, {String? layerType}) async {
final overlay = observer.navigator?.overlay;
if (overlay == null) {
AntdLogs.i(
msg:
"Navigator context is null, cannot proceed with layer operation. "
"Please add AntdLayer.observer to your MaterialApp/Navigator observers",
docUrl: "guide",
biz: "AntdLayer");
return null;
}
final key = _getWidgetKey(widget);
final completer = Completer<T?>();
final entry = OverlayEntry(builder: (context) => widget);
final layerInfo = _LayerInfo<T?>(
key: key,
completer: completer,
entry: entry,
type: layerType ?? (widget is AntdLayerMixin ? widget.layerType : null),
widget: widget,
);
_layerQueue.addLast(layerInfo);
overlay.insert(entry);
return completer.future.whenComplete(() {
entry.remove();
});
}