在学习 kashyapnayan / flutter-mvc-example 源码的时候,在main方法中有如下代码:
void main() {
WidgetsFlutterBinding.ensureInitialized();
///Set preferred orientation to portrait
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
setupLocators();
runApp(
MultiProvider(
/// List of provider, the UI updates when `notifyListeners()` is called
/// on the service classes
/// learn more: https://pub.dev/packages/provider
providers: [
ChangeNotifierProvider(create: (_) => locator<UserDataService>()),
],
child: MyApp(),
),
);
}
WidgetsFlutterBinding.ensureInitialized(); 方法有什么作用呢?
Copilot的回答如下:
WidgetsFlutterBinding.ensureInitialized();方法的作用是确保 Flutter 的绑定已经初始化。 它在调用任何与 Flutter 框架交互的代码之前调用,以确保 Flutter 的引擎和框架已经正确初始化。 这在需要在runApp之前执行一些初始化操作时特别有用,例如设置设备的方向或初始化依赖注入。 简而言之,这个方法确保 Flutter 的底层系统已经准备好,可以安全地进行后续的操作。
在最初的代码中,就可以保证:SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); 和 setupLocators(); 这两个方法在 runApp 之前执行。
一般情况下,并不需要手动手动调用此方法,只有在确实需要在 runApp 之前执行一些异步初始化操作时才需要调用, 可以保证所有的异步的初始化执行完毕之后再执行 runApp。
参考资料
- Flutter中 WidgetsFlutterBinding.ensureInitialized(); 的作用
- Flutter中 WidgetsFlutterBinding.ensureInitialized(); 有什么作用,在什么时候执行呢

文档信息
- 本文作者:Bob.Zhu
- 本文链接:https://home.mytool.group/2024/08/15/01-WidgetsFlutterBinding.ensureInitialized()-of-flutter/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
