Dart宏生成代码报错:part文件中part-of指令需为唯一指令
问题原因
你碰到的错误本质是Dart的part文件规则限制:part文件只能包含part of这一条顶级指令,任何额外的import、library指令都不被允许。而你的宏在生成增强代码时,自动为List和Bind类型添加了import语句,直接违反了这个规则。
解决办法
1. 在主库文件中提前导入依赖类型
打开你的home_module.dart(也就是被宏增强的主类所在的文件),手动导入Bind类(dart:core是Dart默认自动导入的,无需额外添加):
import 'package:flutter_modular/src/presenter/models/bind.dart'; part 'home_module.augmented.dart'; // 替换成你实际的宏生成文件名 @ReviewableModule() class HomeModule { // 你的原有类实现代码 }
2. 让宏复用主库的类型可见性
当主库已经导入了Bind类后,宏在生成增强代码时会自动复用主库的类型上下文,不会再在part文件中添加多余的import。此时宏生成的代码会变成合规的形式:
part of 'package:macros_test/home_module.dart'; augment class HomeModule { augment List<Bind> get binds { return [ ...augmented ]; } }
额外提示
因为Dart宏目前还处于实验阶段,自动类型导入的逻辑可能存在不完善的地方。手动在主库提前导入所有需要用到的依赖类型,是目前规避这类part文件违规问题的最可靠方式。
内容的提问来源于stack exchange,提问作者siega
相关产品推荐
相关产品推荐

