Flutter Web初始化Firebase报错:IndexedDBLocalPersistence需用new调用
解决Flutter Web初始化Firebase时的IndexedDBLocalPersistence错误
我严格按照Flutter官方文档初始化Firebase,但调试时抛出以下错误:
TypeError: Class constructor IndexedDBLocalPersistence cannot be invoked without 'new'
我的Flutter代码如下:
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:pace/firebase_options.dart'; import 'package:pace/pages/auth_page.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { @override Widget build(BuildContext context) { return const MaterialApp( home: Scaffold( body: AuthPage(), ), ); } }
解决办法
- 升级Firebase依赖包:这个错误大多是firebase_core或关联Firebase插件版本过低,与Web端Firebase JS SDK不兼容导致的。打开
pubspec.yaml,将所有Firebase相关依赖(如firebase_core、firebase_auth等)更新到最新稳定版,执行flutter pub get完成更新。 - 匹配JS SDK与Flutter插件版本:检查
web/index.html中的Firebase JS SDK版本,确保和Flutter侧的插件版本保持一致。如果是通过FlutterFire CLI生成的配置,通常会自动匹配,手动修改过配置的话需要重点核对。 - 临时禁用持久化:如果需要紧急启动项目,可以在Firebase初始化后添加代码禁用持久化:
await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); // 添加这行代码禁用持久化 await FirebaseAuth.instance.setPersistence(Persistence.NONE);
注意这只是临时 workaround,优先推荐升级依赖解决根本问题。
- 清理缓存重建项目:执行
flutter clean清除旧构建缓存,再重新运行flutter run -d chrome,避免缓存文件引发的兼容性问题。
内容的提问来源于stack exchange,提问作者Mahesh Babu
相关产品推荐
相关产品推荐

