Flutter GetX - привязка внутри привязки

У меня есть эта привязка к одному из моих представлений:

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;

1 ответ

Я понял это методом проб и ошибок, который работает:

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),
    );
  }
}
Другие вопросы по тегам