是否可以在main [duplicate]中调用firebase.initializeApp()

ia2d9nvy  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(121)

此问题在此处已有答案

No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() in Flutter and Firebase(27个答案)
两年前就关门了。
flutterfire最近引入了一些变化,其中之一是在使用任何插件之前需要调用initializeApp()。

**可以直接调用它吗?**类似于以下内容:

void main() async {
  await Firebase.initializeApp();
  return runApp(App());
}

或者可能像这样没有异步等待

void main() {
  Firebase.initializeApp();
  return runApp(App());
}

我认为第一个例子更正确,但它阻止了main的执行,我不知道未来完成需要多少时间?

jvidinwx

jvidinwx1#

Firebase的唯一要求是在调用任何其他Firebase API之前调用Firebase.initializeApp()。如果不满足这个条件,它将引发一个异常,明确告诉你这一点。
在我的代码中,我在main中调用它,这是我能想到if的最早的地方,它工作起来没有问题:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  ...

Firebase在这一级别的初始化几乎是即时的,因为它只是等待对本地代码的调用完成,而本地代码本身除了查找配置值之外什么也不做。
但是如果这对你来说太长了,你可以不使用await来调用它。这只是意味着你可能必须在你的代码中处理这个Future<FirebaseApp>,在你访问Firebase的时候,通常是把它 Package 在一个FutureBuilder中。

相关问题