ensureScreenSize static method
Future<void>
ensureScreenSize([
- FlutterView? window,
- Duration pollInterval = const Duration(milliseconds: 10)
Ensures screen size is available before proceeding.
Call this before accessing screen dimensions in splash screens or during app initialization.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await AdaptiveUtils.ensureScreenSize();
runApp(MyApp());
}
Or use with FutureBuilder:
FutureBuilder(
future: AdaptiveUtils.ensureScreenSize(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return MyApp();
}
return SplashScreen();
},
)
Implementation
static Future<void> ensureScreenSize([
ui.FlutterView? window,
Duration pollInterval = const Duration(milliseconds: 10),
]) async {
final binding = WidgetsFlutterBinding.ensureInitialized();
binding.deferFirstFrame();
await Future.doWhile(() {
window ??= binding.platformDispatcher.implicitView;
if (window == null || window!.physicalSize.isEmpty) {
return Future.delayed(pollInterval, () => true);
}
return false;
});
binding.allowFirstFrame();
}