Flutter中 WidgetsFlutterBinding.ensureInitialized(); 的作用

2024/08/15 Flutter 共 1123 字,约 4 分钟
Bob.Zhu

在学习 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

参考资料

![image-alter](/image/post/2024/08/15/01/xxx.png)

文档信息

Search

    Table of Contents