检查Flutter中Firebase是否已初始化,如果初始化多次会发生什么?

6 浏览
0 Comments

检查Flutter中Firebase是否已初始化,如果初始化多次会发生什么?

场景:我有一个应用的三个屏幕,根据条件进行启动。一个屏幕是带有其他两个屏幕选项的按钮。\n在一个屏幕上,我正在初始化Firebase并进行数据获取等操作,一切都正常。 void startFirebase() async { await Firebase.initializeApp(); }。然而,在第二个屏幕上,我进行了相同的初始化,但遇到了这个错误:No Firebase App \'[DEFAULT]\' has been created - call Firebase.initializeApp()。\n问题:如何检查它是否已经初始化(检查是否在第一个屏幕上初始化并且在第二个屏幕上不会重新初始化),如果在两个屏幕上都初始化Firebase会发生什么,或者初始化两次会发生什么?\n根据第一个提供的答案进行更新:\n我不确定,但是调用两次初始化不会显示任何错误。以下是我尝试两次的方式:\n@override\n void initState() {\n startFirebase();\n try{\n startFirebase();\n }catch(e){\n print(e.toString());\n }\n super.initState();\n }\n//另一种方式:\n@override\n void initState() {\n startFirebase();\n startFirebase();\n/* try{\n startFirebase();\n }catch(e){\n print(e.toString());\n }*/\n super.initState();\n }\n\n运行标签上没有错误,应用程序正常工作。

0
0 Comments

问题的原因是如果尝试多次初始化Firebase,会导致初始化失败并显示不同的错误消息。错误消息是“FirebaseApp name [DEFAULT] already exists”,意味着已经存在一个名为[DEFAULT]的FirebaseApp。

要解决这个问题,可以通过检查Firebase是否已经初始化来避免多次初始化。可以参考这个问题的回答中描述的方法进行检查。

除非有特定的需求,否则应该只在主应用程序对象启动时全局初始化Firebase一次,并在此之后不再担心它。

作者之前已经检查过这个答案,并且已经根据试验更新了问题。感谢你的建议。

0