flutterfire最近引入了一些更改,其中之一是需要在使用任何插件之前调用initializeApp()。
主要是这样称呼它的,是这样的:
void main() async {
await Firebase.initializeApp();
return runApp(App());
}或者像这样,不需要异步等待
void main() {
Firebase.initializeApp();
return runApp(App());
}我认为第一个例子比较正确,但它阻碍了主体的执行,而我不知道未来要多长时间才能完成?
发布于 2020-08-29 23:36:33
Firebase的唯一要求是在调用任何其他Firebase API之前调用Firebase.initializeApp()。如果不满足该条件,则会显式地引发异常。
在我的代码中,我在我的主代码中称之为它,这是我能想到的最早的地方,而且没有问题:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
...在这个级别上,Firebase的初始化几乎是即时的,因为它只是在等待对本机代码的调用完成,而本机代码本身只会查找配置值。
但是,如果这对您来说太长了,您可以在没有await的情况下调用它。这只是意味着您可能必须在代码的后面处理这个Future<FirebaseApp>,在代码中访问Firebase,通常是将其包装在一个FutureBuilder中。
https://stackoverflow.com/questions/63652710
复制相似问题