4

我有以下服务:

  1. SecuredStorageService()
  2. ApiService({this.authService})
  3. AuthService({this.securedStorageService, this.apiService})
  4. 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),
  ),
],

到目前为止,我可以说它看起来已经很乱了。但事实并非如此。当我运行该应用程序时,我收到以下错误:

在此处输入图像描述

那我怎么办?我在所有ProxyProvidersa之前添加Provider<AuthService>。但是,AuthService 被构建了两次!这失去了作为一个单一实例的全部意义(或者不是吗?)。

我的主要目标是像在 Angular 或 Laravel 中一样进行依赖注入。

4

1 回答 1

5

ProxyProvider和小部件通常与循环依赖作斗争,因为它通常是“意大利面条代码”的标志(查看更多

因此,使用ProxyProvider您将无法制作循环依赖图。

如果这确实是您想要的,请考虑使用Provider.value并手动处理您的依赖项。

于 2019-07-07T22:07:38.820 回答