open<T> static method

Future<T?> open<T>(
  1. Widget widget, {
  2. String? layerType,
})

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();
  });
}