You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:12:34