Flutter GetX-绑定中的绑定



我有一个视图的绑定:

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

但上述控制器也有一个依赖项:

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

_repositoryGetxService,因此应该易于注入:

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;

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

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),
);
}
}

最新更新