You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用injectable注解抽象类运行build_runner报错遗漏什么配置?

报错原因

你直接给无法实例化的抽象类TodoRepository添加了@injectable注解,injectable默认会尝试直接实例化你标记了该注解的类来完成依赖注册,抽象类无法被直接实例化,因此触发了这个报错。

正确配置步骤

  • 第一步:移除抽象类上的@injectable注解,代码修改为如下形式:
abstract class TodoRepository {
  Future<Either<Failure, DayTodosEntity>> getDayDodo(DateEntity date);
}
  • 第二步:编写该抽象类的具体实现类,给实现类添加@Injectable注解,同时通过as参数将实现类绑定到对应的抽象父类:
@Injectable(as: TodoRepository)
class TodoRepositoryImpl implements TodoRepository {
  @override
  Future<Either<Failure, DayTodosEntity>> getDayDodo(DateEntity date) {
    // 此处写对应业务逻辑实现
  }
}
  • 如果你不想通过实现类直接绑定,也可以通过@factoryMethod注解来提供抽象类的实例:
@module
abstract class RegisterModule {
  @factoryMethod
  TodoRepository getTodoRepository() => TodoRepositoryImpl();
}
  • 配置完成后重新执行flutter pub run build_runner build即可正常构建。

内容的提问来源于stack exchange,提问作者reza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:39:00