多个实体绑定的 CupertinoTextFields,可节省焦点
Multiple entity-bound CupertinoTextFields that save on focus out
我有一些要编辑的条目列表。我为每个条目创建了 FocusNode,也为每个条目创建了 CupertinoTextField。
var textField = (UserMotivator um) {
var controller;
var focusNode = new FocusNode();
focusNode.addListener(() {
if (!focusNode.hasFocus) {
post(um);
}
});
var controller = TextEditingController(text: um.text);
return CupertinoTextField(
focusNode: focusNode,
controller: controller,
onChanged: (String value) {
um.text = value;
}
);
};
出于某些奇怪的原因,在模拟器(未在真实设备上测试)中,当我点击许多这些 TextFields 时,我得到了这个:
如何在不使用 FocusNode/ 的情况下将焦点甚至绑定到 TextField,而不让所有这些光标都闪烁?
所以我解决了我认为的问题。它有问题的原因是我在 v1.1.8 上,在更新到 v1.5.4 之后它以某种方式得到修复,并不完美但更好。在我将 FocusNodes
创建代码表单构建移动到 initState
方法后,它变得更好,但光标仍在 TextField
的开头闪烁。这是因为我在 onChange
处理程序中调用了 setState
,这不知何故导致 TextField 重绘并表现得很奇怪。
我有一些要编辑的条目列表。我为每个条目创建了 FocusNode,也为每个条目创建了 CupertinoTextField。
var textField = (UserMotivator um) {
var controller;
var focusNode = new FocusNode();
focusNode.addListener(() {
if (!focusNode.hasFocus) {
post(um);
}
});
var controller = TextEditingController(text: um.text);
return CupertinoTextField(
focusNode: focusNode,
controller: controller,
onChanged: (String value) {
um.text = value;
}
);
};
出于某些奇怪的原因,在模拟器(未在真实设备上测试)中,当我点击许多这些 TextFields 时,我得到了这个:
如何在不使用 FocusNode/ 的情况下将焦点甚至绑定到 TextField,而不让所有这些光标都闪烁?
所以我解决了我认为的问题。它有问题的原因是我在 v1.1.8 上,在更新到 v1.5.4 之后它以某种方式得到修复,并不完美但更好。在我将 FocusNodes
创建代码表单构建移动到 initState
方法后,它变得更好,但光标仍在 TextField
的开头闪烁。这是因为我在 onChange
处理程序中调用了 setState
,这不知何故导致 TextField 重绘并表现得很奇怪。