Flutter中fwfh_text_style包编译报错的原因是什么?
编译错误内容
../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart:11:7: 错误:非抽象类'FwfhTextStyle'缺少以下成员的实现:
- TextStyle.fontVariations
请尝试以下解决方案:- 提供实现代码,
- 从父类或混入类继承实现,
- 将该类标记为抽象类,
- 提供'noSuchMethod'实现。
class FwfhTextStyle extends _TextStyleProxy {
^^^^^^^^^^^^^
/D:/Installion/Flutter/packages/flutter/lib/src/painting/text_style.dart:789:33: 上下文:'TextStyle.fontVariations'在此处定义。
final List<ui.FontVariation>? fontVariations;
^^^^^^^^^^^^^^../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart:43:13: 错误:方法'FwfhTextStyle.apply'的命名参数少于被重写的方法'TextStyle.apply'。
TextStyle apply({
^
/D:/Installion/Flutter/packages/flutter/lib/src/painting/text_style.dart:911:13: 上下文:这是被重写的方法('apply')。
TextStyle apply({
^../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart:43:13: 错误:方法'FwfhTextStyle.apply'缺少被重写方法'TextStyle.apply'的命名参数'fontVariations'。
TextStyle apply({
^
/D:/Installion/Flutter/packages/flutter/lib/src/painting/text_style.dart:911:13: 上下文:这是被重写的方法('apply')。
TextStyle apply({
^../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart:103:13: 错误:方法'FwfhTextStyle.copyWith'的命名参数少于被重写的方法'TextStyle.copyWith'。
TextStyle copyWith({
^
/D:/Installion/Flutter/packages/flutter/lib/src/painting/text_style.dart:814:13: 上下文:这是被重写的方法('copyWith')。
TextStyle copyWith({
^../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart:103:13: 错误:方法'FwfhTextStyle.copyWith'缺少被重写方法'TextStyle.copyWith'的命名参数'fontVariations'。
TextStyle copyWith({
^
/D:/Installion/Flutter/packages/flutter/lib/src/painting/text_style.dart:814:13: 上下文:这是被重写的方法('copyWith')。
TextStyle copyWith({
^
构建失败信息
- 位置:脚本
D:\Installion\Flutter\packages\flutter_tools\gradle\flutter.gradle第1159行 - 错误原因:任务
:app:compileFlutterBuildDebug执行失败 - 进程状态:
flutter.bat以非零退出值1结束
核心原因
使用的fwfh_text_style包版本(2.22.08)未适配当前Flutter版本新增的TextStyle.fontVariations属性,导致继承类未实现该属性及相关方法参数。
解决步骤
1. 升级fwfh_text_style包(推荐)
在项目根目录执行命令升级包到兼容当前Flutter版本的最新版:
flutter pub upgrade fwfh_text_style
或直接修改pubspec.yaml中的包版本号后执行flutter pub get。
2. 降级Flutter版本(备选)
若暂时无法升级包,可将Flutter降级到与fwfh_text_style-2.22.08兼容的版本:
flutter downgrade <兼容版本号>
3. 临时修改包源码(应急方案)
找到本地缓存的包文件(路径:../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fwfh_text_style-2.22.08/lib/fwfh_text_style.dart),做以下修改:
- 在
FwfhTextStyle类中添加属性实现:@override List<ui.FontVariation>? get fontVariations => _style.fontVariations; - 修改
apply方法,补充参数:TextStyle apply({ // 保留原有参数 List<ui.FontVariation>? fontVariations, }) { return _style.apply( // 传递原有参数 fontVariations: fontVariations, ); } - 修改
copyWith方法,补充参数:TextStyle copyWith({ // 保留原有参数 List<ui.FontVariation>? fontVariations, }) { return _style.copyWith( // 传递原有参数 fontVariations: fontVariations ?? this.fontVariations, ); }
注意:该方案仅为临时应急,后续升级包会覆盖修改,优先推荐升级包版本。
内容的提问来源于stack exchange,提问作者EnChoopani

