在 Flutter 中使用 getX,假设我需要为不同的控制器使用相同的服务。
例如,UsersController 和 ProductsController 使用相同的数据库服务。
这样做的最佳实践是什么?
用下面的方法创建和使用单例对象会更准确。
Get.put<LoginService>(LoginService(), permanent: true);
Get.find<LoginService>();
GetX 有关
Get.put
的文档
您想要保存的类,例如控制器或其他东西
//注:“S”表示可以是任何类型的类
创建两个服务,使它们成为单例,并将它们注入到尊重控制器的构造函数中。
class UserService {
static UserService? _instance; //singleton
UserService._();
factory UserService() => _instance ??= UserService._();
//methods
}
定义控制器:
class UserController extends GetxController {
final UserService userService;
UserController({required this.userService});
//methods
}
注入控制器:
Get.put(UserController(UserService()), permanent: true);
对所有其他服务和控制器重复此操作。
为什么?