rez*_*eza 0 dependency-injection injectable flutter
我正在尝试在我的项目中使用可注入,但是当我尝试这部分代码时:
@injectable
abstract class TodoRepository {
Future<Either<Failure, DayTodosEntity>> getDayDodo(DateEntity date);
}
Run Code Online (Sandbox Code Playgroud)
run build_runner
出现此错误后:
[TodoRepository] is abstract and can not be registered directly!
if it has a factory or a create method annotate it with @factoryMethod
Run Code Online (Sandbox Code Playgroud)
不明白我错过了什么。
@injectable 装饰器标记要由 di(依赖注入)包处理的类。
当您稍后要求时,di 应该为您提供此类的实例。但您还将该类标记为“抽象”,并且抽象类无法实例化。
如果你有这个抽象的单一实现,你只需要为实现添加装饰器
@Injectable(as: AbstractClass)
class ConcreteClass implements AbstractClass {}
Run Code Online (Sandbox Code Playgroud)
如果您有多个实现,您可以通过以下方式实现
@Named("impl1")
@Injectable(as: AbstractClass)
class ConcreteClassImpl1 implements AbstractClass {}
@Named("impl2")
@Injectable(as: AbstractClass)
class ConcreteClassImpl2 implements AbstractClass {}
Run Code Online (Sandbox Code Playgroud)
消耗预期的实现
@injectable
class Consumer {
final AbstractClass abstractClass;
Consumer(@Named('impl1') this. abstractClass)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1759 次 |
最近记录: |