Flutter Web项目关联Firebase时出现无限加载问题求助
问题根因及修复方案
1. 修复main.dart重复初始化问题
当前代码中main函数已经执行了await Firebase.initializeApp(),后续又定义了App类再次执行初始化操作,重复初始化会直接导致应用阻塞卡死。直接删除冗余的App类相关代码,简化后的入口逻辑如下:
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:flutter_web_diary/diary_card.dart'; import 'package:flutter_web_diary/diary_entry_model.dart'; import 'package:flutter_web_diary/top_bar_title.dart'; import 'package:provider/provider.dart'; import 'diary_entry_page.dart'; import 'package:firebase_core/firebase_core.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { final diaryCollection = FirebaseFirestore.instance.collection('diaries'); final diaryStream = diaryCollection.snapshots().map((snapshot) { return snapshot.docs.map((doc) => DiaryEntry.fromDoc(doc)).toList(); }); return StreamProvider<List<DiaryEntry>>( create: (_) => diaryStream, // 补充初始空数据避免运行时报错 initialData: const [], child: MaterialApp( title: 'My Diary', debugShowCheckedModeBanner: false, theme: ThemeData( colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.indigo) .copyWith(secondary: Colors.pink), ), initialRoute: '/', routes: { '/': (context) => const MyHomePage(), '/new-entry': (context) => DiaryEntryPage.add(), }, ), ); } } // 原有MyHomePage代码无需修改,直接保留即可
2. 修复index.html的Firebase配置错误
当前页面的Firebase SDK导入方式错误、初始化逻辑重复,且script标签未指定模块化类型,导致JS执行报错阻塞页面加载。直接替换原有完整
相关产品推荐
相关产品推荐

