多个实体绑定的 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 重绘并表现得很奇怪。