问题描述
将Flutter SDK更新到3.7.9后,运行项目出来以下错误提示。
Could not build the precompiled application for the device. Error (Xcode): ../../../.pub-cache/hosted/pub.flutter-io.cn/file-6.1.2/lib/src/interface/file.dart:15:16: Error: The method 'File.create' has fewer named arguments than those of overridden method 'File.create'. Error launching application on iPhone.
解决方案
根据错误提示,是某个库依赖了google的file
库的6.1.2版本,File.create
方法需要几个参数。
我们进入pub中查看file
的更新信息。
file|dart package:https://pub.flutter-io.cn/packages/file/changelog
可以看到,从6.1.3开始,create
方法增加了一个bool类型的参数,所以我们只需要将file
库的版本升级到6.1.3以上即可。
项目中覆盖库版本
最粗暴的方式是直接在项目的pubspec.yaml
中指定file
库的版本,这样编译时会统一库的版本。
name: wiki assit description: A new Flutter application # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 1.2.0+4 environment: sdk: ">=2.17.0 <3.0.0" dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 # 指定 file 版本,6.1.3及以上就行 file: ^6.1.4
使用pub命令
因为不是在项目中直接引用的,所以只能通过pub命令的方式解决依赖。
首先,要清除一下缓存.
flutter clean.
然后使用pub upgrade
更新依赖
flutter pub upgrade
等待依赖更新完成,重新运行项目就能正常跑起来了。