Flutter应用运行报错:File.create方法参数不匹配求助
问题说明
原本正常运行的Flutter应用,更新后出现编译报错。已尝试更新应用级Build.gradle的compileSdkVersion(31)并升级项目依赖,问题未解决。
错误信息
Launching lib/main.dart on Android SDK built for arm64 in debug mode... lib/main.dart:1 : Error: 方法 'File.create' 的命名参数数量少于被覆盖方法 'File.create' 的参数数量。 ../…/interface/file.dart:15 Future<File> create({bool recursive = false}); ^ org-dartlang-sdk:///third_party/dart/sdk/lib/io/file.dart:232:16: 上下文:这是被覆盖的方法 ('create')。 Future<File> create({bool recursive = false, bool exclusive = false}); ^ : Error: 方法 'File.create' 缺少被覆盖方法 'File.create' 的命名参数 'exclusive'。 ../…/interface/file.dart:15 Future<File> create({bool recursive = false}); ^ org-dartlang-sdk:///third_party/dart/sdk/lib/io/file.dart:232:16: 上下文:这是被覆盖的方法 ('create')。 Future<File> create({bool recursive = false, bool exclusive = false}); ^ : Error: 方法 'ForwardingFile.createSync' 的命名参数数量少于被覆盖方法 'File.createSync' 的参数数量。 ../…/forwarding/forwarding_file.dart:22
Pubspec.yaml配置
name: zepper description: The . publish_to: 'none' # 要发布到pub.dev请删除此行 version: 1.0.0+1 environment: sdk: ">=2.17.0-261.0.dev <3.0.0" dependencies: # Firebase 依赖 cloud_firestore: ^3.4.9 firebase_auth: ^3.10.0 firebase_core: ^1.23.0 firebase_messaging: ^13.0.3 firebase_storage: ^10.3.9 # 视觉相关依赖 image_picker: ^0.8.5+3 qr_flutter: ^4.0.0 google_fonts: ^3.0.1 # 服务相关依赖 http: ^0.13.5 url_launcher: ^6.1.5 dart_jsonwebtoken: ^2.4.2 flutter_secure_storage: ^6.0.0 # 状态管理依赖 flutter_riverpod: ^1.0.4 # 标准依赖 cupertino_icons: ^1.0.2 flutter: sdk: flutter dev_dependencies: flutter_lints: ^2.0.0 flutter_test: sdk: flutter flutter: uses-material-design: true assets: - assets/illustrations/ # - images/a_dot_ham.jpeg # fonts: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf # - asset: fonts/Schyler-Italic.ttf # style: italic # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro_Bold.ttf # weight: 700
Flutter Doctor检查结果
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 3.4.0-28.0.pre.105, on macOS 12.6 21G115 darwin-arm64, locale en-IN)
[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 14.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.71.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
• No issues found!
解决步骤
修复自定义文件接口
找到报错路径中的interface/file.dart和forwarding/forwarding_file.dart文件,同步Dart SDK的方法签名:- 修改
create方法,添加exclusive参数:Future<File> create({bool recursive = false, bool exclusive = false}); - 修改
createSync方法,同样新增exclusive参数,保持与SDK方法一致。
- 修改
升级依赖库
执行命令升级所有依赖到最新兼容版本:flutter pub upgrade重点检查涉及文件操作的依赖(如firebase_storage、image_picker)是否有版本更新适配Dart SDK的新参数。
切换Flutter稳定通道
当前使用的master通道为开发预览版,兼容性较差,切换到stable通道:flutter channel stable flutter upgrade
内容的提问来源于stack exchange,提问作者Shimron Alakkal

