单个控制器中的多个 GlobalKey - flutter - getX
Multiple GlobalKey in single controller - flutter - getX
我正在使用 getX
,我的 GlobalKey 有问题,所以我的项目中有 auth 控制器,这个控制器用于两个视图,即登录视图和注册视图,但是当用户在登录页面并转到注册页面或以其他方式在控制台中出现此错误 'Duplicate GlobalKey detected in widget tree.'
这是我的控制器:
class AuthController extends GetxController {
GlobalKey<FormState> loginFormKey;
GlobalKey<FormState> registerFormKey;
AuthController() {
loginFormKey = new GlobalKey<FormState>();
registerFormKey = new GlobalKey<FormState>();
}
//some function
}
登录注册视图是这样的视图:
Widget buildBody(BuildContext context) {
return Form(
key: controller.loginFormKey,
child: ListView(
primary: true,
children: [
//textFormField here
],
),
);
}
我很抱歉我的英语不好
你不应该把你的钥匙放在控制器里。特别是GlobalKey
。而是将它们放在相应的小部件上。表单键是 UI 层组件,其生命周期与 GetxControllers 不同。此外,您不应该将 UI 层对象放入逻辑层。
我正在使用 getX
,我的 GlobalKey 有问题,所以我的项目中有 auth 控制器,这个控制器用于两个视图,即登录视图和注册视图,但是当用户在登录页面并转到注册页面或以其他方式在控制台中出现此错误 'Duplicate GlobalKey detected in widget tree.'
这是我的控制器:
class AuthController extends GetxController {
GlobalKey<FormState> loginFormKey;
GlobalKey<FormState> registerFormKey;
AuthController() {
loginFormKey = new GlobalKey<FormState>();
registerFormKey = new GlobalKey<FormState>();
}
//some function
}
登录注册视图是这样的视图:
Widget buildBody(BuildContext context) {
return Form(
key: controller.loginFormKey,
child: ListView(
primary: true,
children: [
//textFormField here
],
),
);
}
我很抱歉我的英语不好
你不应该把你的钥匙放在控制器里。特别是GlobalKey
。而是将它们放在相应的小部件上。表单键是 UI 层组件,其生命周期与 GetxControllers 不同。此外,您不应该将 UI 层对象放入逻辑层。