Riverpod Generator无法识别Drift生成的TodoItem类型求助
解决Riverpod生成器无法识别Drift生成的
TodoItem类型问题 问题原因
build_runner默认并行执行代码生成器,Riverpod_generator可能在Drift的database.g.dart生成完成前就开始处理providers.dart,导致无法识别自动生成的TodoItem类型,标记为InvalidType。
解决方案
方案1:通过build.yaml强制指定生成顺序
在项目根目录创建/修改build.yaml文件,让Riverpod生成器依赖于Drift生成器,确保Drift先完成代码生成:
targets: $default: builders: riverpod_generator: depends_on: - drift_dev
配置完成后,重新执行dart run build_runner watch -d即可。
方案2:分步执行代码生成
如果不想配置build文件,可以分两步单独触发对应生成器:
- 先生成Drift相关代码:
dart run build_runner build -d --builder=drift_dev:drift_dev
- 再生成Riverpod相关代码:
dart run build_runner build -d --builder=riverpod_generator:riverpod_generator
watch模式下也可以分开启动两个进程,先启动Drift的watch,再启动Riverpod的。
额外检查
确保providers.dart中正确导入了database.dart,因为TodoItem是通过database.dart的part文件暴露的:
import 'database.dart'; // 必须添加这行
内容的提问来源于stack exchange,提问作者Liu Silong
相关产品推荐
相关产品推荐

