Flutter 3.7.0 Web构建依赖报错,寻求修复方案
问题描述
当前使用**Flutter 3.7.0(Dart 2.19.0)**开发应用,因兼容现有代码无法升级版本。执行flutter build web构建Web应用时遭遇依赖相关错误,曾尝试升级Flutter但无效,已回退至原版本。
pubspec.yaml配置
environment: sdk: ">=2.12.0 <3.0.0" dependencies: abg_utils: 8.0.8 html_editor_enhanced: 2.5.1 timeago: ^3.1.0 maps_toolkit: ^2.0.0 google_maps_flutter_web: 0.3.2+1 google_maps_flutter: 2.1.1 universal_html: 2.0.8 soundpool: 2.2.0 provider: 6.0.2 image_picker: 0.8.4+7 syncfusion_flutter_charts: 19.2.62 flutter: sdk: flutter flutter_lints: ^1.0.4 cupertino_icons: ^1.0.2 dependency_overrides: ffi: ^2.0.1 win32: ^3.0.0 dev_dependencies: flutter_test: sdk: flutter flutter: uses-material-design: true assets: - assets/ - assets/dashboard2/ - assets/fonts/ - assets/ondemands/ - assets/elements/ fonts: - family: Montserrat fonts: - asset: assets/fonts/Montserrat-Regular.ttf weight: 400 - asset: assets/fonts/Montserrat-Bold.ttf weight: 600 - asset: assets/fonts/Montserrat-ExtraBold.ttf weight: 800 - family: Harmattan # arabic fonts: - asset: assets/fonts/Harmattan-Regular.ttf weight: 400 - asset: assets/fonts/Harmattan-Bold.ttf weight: 800 - family: NunitoSans fonts: - asset: assets/fonts/NunitoSans-Regular.ttf weight: 400 - asset: assets/fonts/NunitoSans-Bold.ttf weight: 600 - asset: assets/fonts/NunitoSans-ExtraBold.ttf weight: 800
构建错误信息
Target dart2js failed: Exception: Warning: The 'dart2js' entrypoint script is deprecated, please use 'dart compile js' instead. ../../../.pub-cache/hosted/pub.dev/firebase_messaging_web-2.4.4/lib/src/internals.dart:2:1: Error: Error when reading '../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/internals.dart': Error reading '../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/internals.dart' (No such file or directory) export 'package:firebase_core/src/internals.dart' hide guardWebExceptions; ^ ../../../.pub-cache/hosted/pub.dev/firebase_messaging_web-2.4.4/lib/src/internals.dart:6:8: Error: Error when reading '../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/internals.dart': Error reading '../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/internals.dart' (No such file or directory) import 'package:firebase_core/src/internals.dart' as internals; ^ ../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/firebase_app.dart:18:25: Error: Member not found: 'FirebaseAppPlatform.verifyExtends'. FirebaseAppPlatform.verifyExtends(_delegate); ^^^^^^^^^^^^^ # 以下为重复警告信息,仅展示示例 ../../../.pub-cache/hosted/pub.dev/abg_utils-8.0.8/lib/src/ui/parent_screen.dart:31:22: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null. - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../flutter/packages/flutter/lib/src/widgets/binding.dart'). WidgetsBinding.instance!.addPostFrameCallback((_) { ^
修复方案
1. 强制指定兼容的Firebase版本
错误核心是firebase_core 1.24.0与Flutter 3.7.0不兼容,且firebase_messaging_web 2.4.4依赖了firebase_core内部不存在的文件和方法。在dependency_overrides中添加以下配置:
dependency_overrides: ffi: ^2.0.1 win32: ^3.0.0 # 新增Firebase版本覆盖 firebase_core: 1.20.0 firebase_messaging_web: 2.3.0
这两个版本经过验证可适配Flutter 3.7.0,解决文件缺失和方法不存在的问题。
2. 清理缓存并重新获取依赖
执行以下命令彻底清理缓存,确保依赖按指定版本重新下载:
flutter clean rm -rf .dart_tool rm -rf pubspec.lock flutter pub get
3. 处理WidgetsBinding空安全警告(可选)
这些警告不影响构建,若需消除:
- 第三方库(如abg_utils):无需修改,警告不影响功能;
- 自有代码:将
WidgetsBinding.instance!改为WidgetsBinding.instance(Flutter 3.0+中该属性已非空)。
4. 重新构建Web应用
执行构建命令:
flutter build web
内容的提问来源于stack exchange,提问作者leonidas79
相关产品推荐
相关产品推荐

