我有以下服务:
SecuredStorageService()
ApiService({this.authService})
AuthService({this.securedStorageService, this.apiService})
RegisterService({this.apiService, this.securedStorageService})
哪一位让我写了:
providers: [
Provider<SecuredStorageService>.value(value: SecuredStorageService()),
ProxyProvider<AuthService, ApiService>(
builder: (_, auth, __) => ApiService(authService: auth),
),
ProxyProvider2<ApiService, SecuredStorageService, RegisterService>(
builder: (_, api, storage, __) => RegisterService(apiService: api, securedStorageService: storage),
),
ProxyProvider2<ApiService, SecuredStorageService, AuthService>(
builder: (_, api, storage, __) => AuthService(apiService: api, securedStorageService: storage),
),
],
我可以说到现在为止,它看起来已经很凌乱了。但是事实并非如此。运行应用程序时,出现以下错误:
那我该怎么办?我在所有ProxyProvider
前添加了Provider<AuthService>
。但是,AuthService被构造了两次!哪个失去了成为单个实例的全部意义(不是吗?)。
我的主要目标是像Angular或Laravel一样进行某种依赖注入。
答案 0 :(得分:1)
ProxyProvider
和窗口小部件通常与循环依赖关系作斗争,因为它通常是“意大利面条代码”(see more)的标志
这样,使用ProxyProvider
将无法制作循环依赖图。
如果这确实是您想要的,请考虑使用Provider.value
并手动处理您的依赖项。