open method
Implementation
Future<void> open(BuildContext context) async {
if (completer?.isCompleted == false) return;
completer = Completer();
overlayEntry = getOverlayEntry(context);
Overlay.of(context).insert(overlayEntry!);
//add screen size change listener
WidgetsBinding.instance
.addObserver(CustomWidgetsBindingObserver(overlayEntry!));
await completer?.future;
}