- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最佳答案
您必须以这种方式使用它:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
WidgetFlutterBinding
用于与 Flutter 引擎交互。
Firebase.initializeApp()
需要调用 native 代码来初始化Firebase,并且由于插件需要使用平台 channel 来调用 native 代码,这是异步完成的,因此您必须调用
ensureInitialized()
确保你有一个
WidgetsBinding
的实例.
Returns an instance of the WidgetsBinding, creating and initializing it if necessary. If one is created, it will be a WidgetsFlutterBinding. If one was previously initialized, then it will at least implement WidgetsBinding.
You only need to call this method if you need the binding to be initialized before calling runApp.
@override
Future<FirebaseAppPlatform> initializeApp(
{String name, FirebaseOptions options}) async {
if (name == defaultFirebaseAppName) {
throw noDefaultAppInitialization();
}
// Ensure that core has been initialized on the first usage of
// initializeApp
if (!isCoreInitialized) {
await _initializeCore();
}
// If no name is provided, attempt to get the default Firebase app instance.
// If no instance is available, the user has not set up Firebase correctly for
// their platform.
if (name == null) {
MethodChannelFirebaseApp defaultApp =
appInstances[defaultFirebaseAppName];
if (defaultApp == null) {
throw coreNotInitialized();
}
return appInstances[defaultFirebaseAppName];
}
assert(options != null,
"FirebaseOptions cannot be null when creating a secondary Firebase app.");
// Check whether the app has already been initialized
if (appInstances.containsKey(name)) {
throw duplicateApp(name);
}
_initializeFirebaseAppFromMap(await channel.invokeMapMethod(
'Firebase#initializeApp',
<String, dynamic>{'appName': name, 'options': options.asMap},
));
return appInstances[name];
}
invokeMapMethod
将使用指定的参数调用上述 channel 上的方法,然后调用
initializeApp()
native 代码中的方法,
WidgetsFlutterBinding.ensureInitialized()
自
runApp()
函数在内部调用它:
void runApp(Widget app) {
WidgetsFlutterBinding.ensureInitialized()
..scheduleAttachRootWidget(app)
..scheduleWarmUpFrame();
}
https://github.com/flutter/flutter/blob/bbfbf1770c/packages/flutter/lib/src/widgets/binding.dart#L1012
关于firebase - WidgetsFlutterBinding.ensureInitialized() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63873338/
我正在尝试使用带有以下代码行的 Firebase 包。 我真的很想知道这行代码实际上是做什么的? 官方文档对我帮助不大。有人可以解释一下吗? 最佳答案 您必须以这种方式使用它: void main()
我已经安装了 Visual Studio 2013,当我运行我的应用程序时,出现以下错误。 我不知道要在哪里初始化这个对象。 怎么办? Server Error in '/' Applicat
在我的Flutter应用程序中,有一个繁重的任务,它迫使我使用隔离来获得流畅的UI,并且该任务包括使用rootBundle读取一些 Assets 文件并在其中搜索某些文本。现在,由于呈现UI的主隔离区
我正在查看 Reflector 中的 LazyInitializer.EnsureInitialized(ref T, Func{T}),该方法中似乎有一个 volatile 局部变量 volatil
在我的WebApi项目下,我不知道这一行是什么GlobalConfiguration.Configuration.EnsureInitialized()在那里做 Global.asax Applica
在具有 Web API 的 MVC 5 上,我有以下内容,仅使用属性路由: RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); R
我是一名优秀的程序员,十分优秀!