Dart扩展类型内使用@redeclare注解报错如何解决?
解决Dart扩展类型中
@redeclare注解未定义的问题 问题根源
@redeclare是Dart 3.4.0及以上版本才引入的注解,用于允许扩展类型重写其实现接口的成员。你的Dart SDK版本为3.3.0(稳定版),尚未包含该特性,因此会触发“Undefined name 'redeclare'”错误。
可行解决方案
1. 升级Dart SDK到3.4.0+稳定版
这是最直接的解决方式,升级后@redeclare会由dart:core库默认提供,无需额外导入:
- 若使用Flutter,执行命令:
flutter upgrade,同步升级Flutter及配套的Dart SDK; - 纯Dart项目可通过官方渠道下载最新稳定版,或执行
dart pub upgrade更新依赖链中的SDK版本。
2. 不升级SDK的临时替代方案
Dart 3.3.0的扩展类型不支持重写接口成员,可通过以下方式调整代码:
- 自定义新方法替代重写运算符:
extension type MyString(String _) implements String { int getCodeUnit(int index) => codeUnitAt(index); }
- 若需保留运算符形式,改用普通扩展而非扩展类型:
extension MyStringExtension on String { int operator [](int index) => codeUnitAt(index); }
内容的提问来源于stack exchange,提问作者Jaafar Melhem
相关产品推荐
相关产品推荐

