0

我对我的一个观点有这个约束:

class LoggedOutNicknameBinding extends Bindings {
  @override
  void dependencies() {
    Get.lazyPut<LoggedOutNicknameController>(
      () => LoggedOutNicknameController(),
    );
  }
}

但是上面的控制器也有一个依赖:

class LoggedOutNicknameController extends GetxController {
  LoggedOutNicknameController(this._repository);
  final IUserRepository _repository;

_repository是一个GetxService所以应该很容易注入:

class UserRepository extends GetxService implements IUserRepository {

我可以通过绑定传递_repository给吗?LoggedOutNicknameController

如果这不可能与绑定有关,我的解决方案看起来不错吗?我已经完全删除了绑定以允许我注入必要的组件:

class LoggedOutNicknameView extends GetView<LoggedOutNicknameController> {
  LoggedOutNicknameView() {
    final ldp = Get.put(LocalDataProvider());
    final lds = Get.put(LocalDataSource(dataProvider: ldp));
    repository = Get.put(UserRepository(lds));
    controller = Get.put(LoggedOutNicknameController(repository));
  }

  LoggedOutNicknameController controller;
  IUserRepository repository;
4

1 回答 1

2

我通过反复试验找到了这种方法:

class LoggedOutNicknameBinding extends Bindings {
  LoggedOutNicknameBinding() {
    final ldp = Get.put(LocalDataProvider());
    lds = Get.put(LocalDataSource(dataProvider: ldp));
    repository = Get.put(UserRepository(lds));
  }

  IUserRepository repository;
  LocalDataSource lds;

  @override
  void dependencies() {
    Get.lazyPut<LoggedOutNicknameController>(
      () => LoggedOutNicknameController(repository),
    );
    Get.lazyPut<UserRepository>(
      () => UserRepository(lds),
    );
  }
}
于 2020-10-31T22:22:29.330 回答