Flutter 颤振GetX-绑定中的绑定

Flutter 颤振GetX-绑定中的绑定,flutter,dart,flutter-get,Flutter,Dart,Flutter Get,我对我的一个观点有约束力: class LoggedOutNicknameBinding extends Bindings { @override void dependencies() { Get.lazyPut<LoggedOutNicknameController>( () => LoggedOutNicknameController(), ); } } \u repository是一个GetxService,因此应该很容易注入:

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

class LoggedOutNicknameBinding extends Bindings {
  @override
  void dependencies() {
    Get.lazyPut<LoggedOutNicknameController>(
      () => LoggedOutNicknameController(),
    );
  }
}
\u repository
是一个
GetxService
,因此应该很容易注入:

class UserRepository extends GetxService implements IUserRepository {
我可以通过绑定将
\u存储库
传递给
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;
类LoggedOutNicknameView扩展了GetView{
LoggedOutNicknameView(){
final ldp=Get.put(LocalDataProvider());
final lds=Get.put(LocalDataSource(dataProvider:ldp));
repository=Get.put(UserRepository(lds));
controller=Get.put(LoggedOutNicknameController(存储库));
}
LoggedOutNicknameController控制器;
IUSER知识库;

我通过反复试验找到了这一方法,它是有效的:

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),
    );
  }
}
类LoggedOutNicknameBinding扩展绑定{
LoggedOutNicknameBinding(){
final ldp=Get.put(LocalDataProvider());
lds=Get.put(LocalDataSource(dataProvider:ldp));
repository=Get.put(UserRepository(lds));
}
IUSER知识库;
本地数据源;
@凌驾
void依赖项(){
懒鬼(
()=>LoggedOutNicknameController(存储库),
);
懒鬼(
()=>用户存储库(lds),
);
}
}

我有一个问题。如果我每次使用Get.put(LocalDataProvider()),LocalDataProvider()实例在整个应用程序中是否都是相同的?
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),
    );
  }
}