Flutter升级cloud_firestore后热重载触发Stack Overflow未处理异常
修复方案
这个异常是cloud_firestore 2.5.1版本与Flutter热重载机制的兼容性问题,报错日志里的main函数无限递归调用是因为Firebase初始化逻辑在热重载时重复执行触发了栈溢出。可按以下步骤排查解决:
- 调整Firebase初始化逻辑,将
WidgetsFlutterBinding.ensureInitialized()作为main函数第一行执行,初始化代码必须放在runApp()之前且仅执行一次,参考写法:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(const MyApp()); }
- 检查当前Flutter SDK版本,需升级到2.5.0及以上稳定版,cloud_firestore 2.5.1的最低适配Flutter版本为2.5.0,低版本SDK会触发热重载兼容异常。
- 若版本匹配仍报错,手动删除项目根目录下的
.dart_tool文件夹,依次执行flutter pub get、flutter run冷启动项目,首次启动完成后再测试热重载即可。 - 上述操作都无效的话,可临时将cloud_firestore降级到2.2.2版本,该版本无已知热重载兼容问题,可正常使用。
内容的提问来源于stack exchange,提问作者Abdul Rehman
相关产品推荐
相关产品推荐

