Flutter编译报错:File.create方法覆写参数不匹配求助
Flutter编译失败解决:file包版本兼容问题
错误详情
启动Debug模式编译时出现以下报错:
正在debug模式下在sdk gphone64 arm64上启动lib/main.dart... 正在运行Gradle任务'assembleDebug'... ../../../.pub-cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: 错误:方法'File.create'的命名参数少于被覆写方法'File.create'的参数。 Future create({bool recursive = false}); org-dartlang-sdk:///third_party/dart/sdk/lib/io/file.dart:232:16: 上下文:这是被覆写的方法('create')。 Future create({bool recursive = false, bool exclusive = false}); ^ ../../../.pub-cache/hosted/pub.dev/file-6.1.2/lib/src/interface/file.dart:15:16: 错误:方法'File.create'没有被覆写方法'File.create'的命名参数'exclusive'。 Future create({bool recursive = false}); ^ org-dartlang-sdk:///third_party/dart/sdk/lib/io/file.dart:232:16: 上下文:这是被覆写的方法('create')。 Future create({bool recursive = false, bool exclusive = false}); ^ ../../../.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:///third_party/dart/sdk/lib/io/file.dart:248:8: 上下文:这是被覆写的方法('createSync')。 void createSync({bool recursive = false, bool exclusive = false}); ^ ../../../.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:///third_party/dart/sdk/lib/io/file.dart:248:8: 上下文:这是被覆写的方法('createSync')。 void createSync({bool recursive = false, bool exclusive = false}); ^ 目标kernel_snapshot失败:异常 失败:构建因异常终止。 - 位置: 脚本'/Users/myuser/Documents/Softwere/flutter/packages/flutter_tools/gradle/flutter.gradle'第1151行 - 错误原因: 任务':app:compileFlutterBuildDebug'执行失败。 > 进程'command '/Users/myuser/Documents/Softwere/flutter/bin/flutter''以非零退出值1结束 构建在13秒内失败 异常:Gradle任务assembleDebug执行失败,退出码为1
项目依赖情况
未直接引入file包,当前项目依赖列表:
- cupertino_icons: ^1.0.5
- get: ^4.6.5
- http: ^0.13.5
- shared_preferences: ^2.0.17
- flutter_screenutil: ^5.6.1
- intl_phone_field: ^3.1.0
- pin_code_fields: ^7.4.0
- carousel_slider: ^4.2.1
- intl: ^0.18.0
- flutter_multi_formatter: ^2.10.2
- flutter_rating_bar: ^4.0.1
- image_picker: ^0.8.6+1
- image_cropper: ^3.0.1
- cached_network_image: ^3.2.3
- country_codes: ^2.2.0
- firebase_messaging: ^14.0.3
- cloud_firestore: ^4.0.3
- firebase_core: ^2.1.1
- google_sign_in: ^5.4.2
- google_maps_flutter: ^2.2.1
- geolocator: ^9.0.2
- geocoding: ^2.0.5
- flutter_polyline_points: ^1.0.0
- flutter_facebook_auth: ^4.4.1+1
- draggable_fab: ^0.1.4
- google_place: ^0.4.7
- flutter_google_places: ^0.3.0
- dotted_border: ^2.0.0+3
- flutter_local_notifications: ^12.0.3
- webview_flutter: ^3.0.4
- path_provider: ^2.0.12
- decimal: ^2.3.2
- file_picker: ^5.2.5
- package_info_plus: ^3.0.3
- sign_in_with_apple: ^4.1.0
- flutter_stripe: ^6.0.0
- flutter_svg: ^2.0.1
- upgrader: ^5.0.0
- dual_screen: ^1.0.3
解决方法
1. 问题根源
报错来自间接依赖的file:6.1.2包,该版本未实现Dart SDK新增的exclusive参数,导致方法覆写不兼容。
2. 具体步骤
- 打开项目的
pubspec.yaml,添加依赖重写规则,强制使用兼容版本:
dependency_overrides: file: ^6.1.4 # 或更高稳定版
- 执行命令更新依赖:
flutter pub get
- 重新编译项目:
flutter run
3. 备选方案
如果上述版本仍有问题,可尝试:
- 升级
file_picker到最新版,间接更新依赖的file包版本 - 使用
file包的最新稳定版
内容的提问来源于stack exchange,提问作者Alpit Panchal
相关产品推荐
相关产品推荐

