showOverlay static method

void showOverlay(
  1. BuildContext context, {
  2. int? durationInSeconds,
  3. int layerId = 0,
  4. required Widget widget,
})

Implementation

static void showOverlay(BuildContext context, {int? durationInSeconds, int layerId = 0, required Widget widget}) {
  var _overlay = OverlayEntry(builder: (_) => widget);

  if (_lastOverlays[layerId] != null) {
    _lastOverlays[layerId]!.remove();
    _lastOverlays[layerId] = null;
  }
  var o = Overlay.of(context);
  if (o == null) {
    return;
  }
  o.insert(_overlay);
  _lastOverlays[layerId] = _overlay;

  if (durationInSeconds == null) return;

  Future.delayed(Duration(seconds: durationInSeconds), () {
    if (_lastOverlays[layerId] == null || _lastOverlays[layerId] != _overlay) return;
    _lastOverlays[layerId]!.remove();
    _lastOverlays[layerId] = null;
  });
}