watchWindowIsReady method
dynamic
watchWindowIsReady()
Implementation
watchWindowIsReady() {
ui.FlutterView view = PlatformDispatcher.instance.views.first;
double viewportWidth = view.physicalSize.width / view.devicePixelRatio;
double viewportHeight = view.physicalSize.height / view.devicePixelRatio;
if (viewportWidth == 0.0 && viewportHeight == 0.0) {
// window.physicalSize are Size.zero when app first loaded. This only happened on Android and iOS physical devices with release build.
// We should wait for onMetricsChanged when window.physicalSize get updated from Flutter Engine.
VoidCallback? _ordinaryOnMetricsChanged = PlatformDispatcher.instance.onMetricsChanged;
PlatformDispatcher.instance.onMetricsChanged = () async {
if (view.physicalSize == ui.Size.zero) {
return;
}
setState(() {
_flutterScreenIsReady = true;
});
// Should proxy to ordinary window.onMetricsChanged callbacks.
if (_ordinaryOnMetricsChanged != null) {
_ordinaryOnMetricsChanged();
// Recover ordinary callback to window.onMetricsChanged
PlatformDispatcher.instance.onMetricsChanged = _ordinaryOnMetricsChanged;
}
};
} else {
_flutterScreenIsReady = true;
}
}