0

I have this binding for one of my views:

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

But the above controller has a dependency too:

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

_repository is a GetxService so should be easy to inject:

class UserRepository extends GetxService implements IUserRepository {

Can I pass the _repository to the LoggedOutNicknameController via a binding?

If this is not possible to do with a binding, does my solution look fine? I have removed the binding entirely to allow me to inject the necessary components:

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;
BeniaminoBaggins
  • 11,202
  • 41
  • 152
  • 287

1 Answers1

2

I have figured out this way through trial and error which works:

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),
    );
  }
}
BeniaminoBaggins
  • 11,202
  • 41
  • 152
  • 287
  • I have a question. Will LocalDataProvider() instance will be the same across the app if I use Get.put(LocalDataProvider()) every time I wantLocalDataProvider() instance? – Hamza Ahmed Khan Dec 03 '20 at 12:42