Flutter项目编译失败求助:类未实现成员及字段类型错误
解决方案
问题1&2:WidgetsLocalizations未实现成员
你的类S和$en继承了WidgetsLocalizations但未实现Flutter版本更新后新增的重排序相关方法,可任选以下方式解决:
- 直接实现缺失方法
在i18n.dart的S和$en类中添加对应方法的本地化实现:
@override String get reorderItemDown => '向下移动项目'; @override String get reorderItemLeft => '向左移动项目'; @override String get reorderItemRight => '向右移动项目'; @override String get reorderItemToEnd => '移至末尾'; @override String get reorderItemToStart => '移至开头'; @override String get reorderItemUp => '向上移动项目';
根据实际本地化需求替换字符串内容即可。
- 继承已实现的子类
若无需自定义全部WidgetsLocalizations逻辑,让S和$en继承DefaultWidgetsLocalizations而非直接继承WidgetsLocalizations,自动获取所有默认实现:
class S extends DefaultWidgetsLocalizations { // 你的自定义代码 } class $en extends DefaultWidgetsLocalizations { // 你的自定义代码 }
问题3:file_version_info.dart字段可空错误
FFI的Struct字段不允许使用可空类型,修改对应字段定义:
将:
int? wLanguage; int? wCodePage;
改为:
int wLanguage; int wCodePage;
若字段存在未初始化场景,可在构造函数中设置默认值,或使用FFI的external关键字声明(针对Struct子类):
class FileVersionInfo extends Struct { @Int32() external int wLanguage; @Int32() external int wCodePage; // 其他字段定义 }
后续Gradle错误处理
前面的Dart代码编译错误会直接导致kernel_snapshot失败,进而引发Gradle的StackOverflowError和任务失败。解决完上述代码问题后,执行以下命令清理缓存并重新编译:
flutter clean flutter pub get flutter run
内容的提问来源于stack exchange,提问作者qwertt
相关产品推荐
相关产品推荐

