Flutter项目file库兼容性错误及环境配置问题求助
问题:Flutter项目运行时file库出现方法重写参数不兼容错误
同一份Flutter项目其他开发者可正常运行,我运行时却出现兼容性错误,提示file库中的方法重写时命名参数数量不足,缺少'exclusive'参数。
控制台错误日志
../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: 错误:方法'File.create'的命名参数少于被重写的方法'File.create'。 Future<File> create({bool recursive = false}); ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('create')。 ../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: 错误:方法'File.create'缺少被重写方法'File.create'的命名参数'exclusive'。 Future<File> create({bool recursive = false}); ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('create')。 ../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/forwarding/forwarding_file.dart:22:8: 错误:方法'ForwardingFile.createSync'的命名参数少于被重写的方法'File.createSync'。 void createSync({bool recursive = false}) => ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('createSync')。 ../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/forwarding/forwarding_file.dart:22:8: 错误:方法'ForwardingFile.createSync'缺少被重写方法'File.createSync'的命名参数'exclusive'。 void createSync({bool recursive = false}) => ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('createSync')。 ../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/backends/memory/memory_file.dart:57:8: 错误:方法'MemoryFile.createSync'的命名参数少于被重写的方法'File.createSync'。 void createSync({bool recursive = false}) { ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('createSync')。 ../../AppData/Local/Pub/Cache/hosted/pub.dev/file-6.1.2/lib/src/backends/memory/memory_file.dart:57:8: 错误:方法'MemoryFile.createSync'缺少被重写方法'File.createSync'的命名参数'exclusive'。 void createSync({bool recursive = false}) { ^ org-dartlang-sdk:///dart-sdk/lib/io/file.dart: 上下文:这是被重写的方法('createSync')。
flutter doctor 检测结果
flutter doctor -v [√] Flutter(稳定通道,3.7.3版本,运行于Microsoft Windows [Versi¢n 10.0.19045.2728],区域设置es-CO) • Flutter版本3.7.3,位于稳定通道,路径为C:\Users\USER\Downloads\flutter • 上游仓库https://github.com/flutter/flutter.git • Framework修订版本9944297138(4个月前),提交时间2023-02-08 15:46:04 -0800 • Engine修订版本248290d6d5 • Dart版本2.19.2 • DevTools版本2.20.1 [X] Windows版本(无法确认已安装的Windows版本是否为10或更高) [!] Android工具链 - 开发Android设备(Android SDK版本33.0.2) • Android SDK路径为C:\Users\USER\AppData\Local\Android\sdk • 平台android-33-ext4,build-tools版本33.0.2 • Java二进制文件路径:C:\Program Files\Java\jdk-11.0.17\bin\java • Java版本Java(TM) SE Runtime Environment 18.9(版本11.0.17+10-LTS-269) ! 部分Android许可证未接受。解决方法:运行flutter doctor --android-licenses [√] Chrome - 开发Web应用 • Chrome路径为C:\Program Files\Google\Chrome\Application\chrome.exe [X] Visual Studio - 开发Windows应用 X 未安装Visual Studio;这是Windows开发必需的。 下载地址:https://visualstudio.microsoft.com/downloads/。 请安装“使用C++的桌面开发”工作负载,包括所有默认组件 [!] Android Studio(2022.1版本) • Android Studio路径为C:\Program Files\Android\Android Studio • Flutter插件可从以下地址安装: https://plugins.jetbrains.com/plugin/9212-flutter • Dart插件可从以下地址安装: https://plugins.jetbrains.com/plugin/6351-dart X 无法找到捆绑的Java版本。 • 尝试更新或重新安装Android Studio。 [√] VS Code(1.78.2版本) • VS Code路径为C:\Users\USER\AppData\Local\Programs\Microsoft VS Code • Flutter扩展版本3.58.0 [√] 已连接设备(3台可用) • Windows(桌面)• windows • windows-x64 • Microsoft Windows [Versi¢n 10.0.19045.2728] • Chrome(Web) • chrome • web-javascript • Google Chrome 111.0.5563.146 • Edge(Web) • edge • web-javascript • Microsoft Edge 111.0.1661.54 [√] HTTP主机可用性 • 所有必需的HTTP主机均可用 ! 检测到4类问题。
问题原因与解决方案
原因
你当前使用的Flutter 3.7.3配套Dart 2.19.2,Dart SDK的File.create和createSync方法新增了exclusive参数,但本地缓存的file库版本(6.1.2)未适配该参数,导致重写方法时参数不匹配,引发编译错误。
解决方案
清理并重新拉取依赖
- 执行命令清理pub缓存:
flutter pub cache clean - 进入项目目录,运行
flutter pub get重新获取适配当前Dart版本的依赖包
- 执行命令清理pub缓存:
指定兼容的file库版本
如果上述操作无效,在项目的pubspec.yaml中直接指定file库的兼容版本,例如:dependencies: file: ^6.1.4然后再次执行
flutter pub get修复其他环境问题(非当前错误直接原因,但建议处理)
- 运行
flutter doctor --android-licenses接受所有Android许可证 - 重新安装Android Studio,或在Android Studio中指定正确的Java JDK路径
- 若需开发Windows应用,安装Visual Studio并勾选“使用C++的桌面开发”工作负载
- 运行
内容的提问来源于stack exchange,提问作者mauricio
相关产品推荐
相关产品推荐

