Flutter 如何使用 TextField 中的当前值更新提示文本

Flutter how to update hint text with current value in TextField

我设置了一个文本字段,因此当我单击它时它会清除该值 - 否则您必须先删除当前值才能键入新值。问题是,当我点击时,可以看到原来的提示文本,这可能会让人很困惑,因为它看起来像是被重置了。

So for example, the original hint text shows 25 in the text field, then I input a new value of 48. But if I click again to input a new value once more, the original 25 hint text value is displayed again after it clears on focus.

  final TextEditingController control;
  final Function onchanged;
  FocusNode _focusNode;

  @override
  void initState() {
    super.initState();
    _focusNode = FocusNode();
    _focusNode.addListener(() {
      if (_focusNode.hasFocus) control.clear();
    });
  }

  TextField(
        focusNode: _focusNode,
        controller: control,
        onChanged: onchanged,
        decoration: InputDecoration(
          hintText: hint,
        ),
      ),

我怎样才能使提示文本更新到以前的值(在清除之前),以便在单击时显示相同的值?这是表单字段中的正常行为,所以我想实现这一点。

在清除 textField 控制器之前,使用来自控制器的值使用 setState 更新提示变量。那应该做的工作。

为清楚起见,答案是将分配给 hintTexthint 字符串的值设置为控制器文本值的最后一个值,就在它被清除之前。这是在 FocusNode 侦听器中使用 setState.

完成的
  String _hint;
  final TextEditingController control;
  final Function onchanged;
  FocusNode _focusNode;

  @override
  void initState() {
    super.initState();
    _focusNode = FocusNode();
    _focusNode.addListener(() {
      if (_focusNode.hasFocus) {
        setState(() {
          _hint = control.text;
        });
        control.clear();
      }
    });
  }

  TextField(
        focusNode: _focusNode,
        controller: control,
        onChanged: onchanged,
        decoration: InputDecoration(
          hintText: _hint,
        ),
      ),