remove method

void remove ()

Remove this entry from the overlay.

This should only be called once.

If this method is called while the SchedulerBinding.schedulerPhase is SchedulerPhase.persistentCallbacks, i.e. during the build, layout, or paint phases (see WidgetsBinding.drawFrame), then the removal is delayed until the post-frame callbacks phase. Otherwise the removal is done synchronously. This means that it is safe to call during builds, but also that if you do call this during a build, the UI will not update until the next frame (i.e. many milliseconds later).

Implementation

void remove() {
  assert(_overlay != null);
  final OverlayState overlay = _overlay;
  _overlay = null;
  if (SchedulerBinding.instance.schedulerPhase == SchedulerPhase.persistentCallbacks) {
    SchedulerBinding.instance.addPostFrameCallback((Duration duration) {
      overlay._remove(this);
    });
  } else {
    overlay._remove(this);
  }
}