首页 > 解决方案 > 如何在 Flutter 中的 OnChange 事件中清除 Textfield 并将焦点返回到同一个 Textfield 控制器?

问题描述

我在 Flutter App 中有一个 Textfield 控制器,我想清除该 Textfield 并在将该 Textfield 的值传递给该 Textfield 自己的 OnChange 事件后重新聚焦。

实际上,在我的应用程序中,我想使用外部设备(即连接到我们的 android 设备的 QR 码扫描仪)连续扫描 QR 码。然后我想将每个新扫描的值显示到一个标签上,并在扫描新的 QR 码后再次更新该值。

任何人都可以帮助我在 Flutter 中实现它吗?

标签: flutterdarttextfieldonchange

解决方案


我实现了所需的功能,但我对这种方法并不满意,我希望以某种方式得到纠正。但是您绝对可以理解需要做什么。

var _currentFieldFocusNode = FocusNode();
var _textEditingController = TextEditingController();
TextFormField(
  focusNode: _currentFieldFocusNode,
  controller: _textEditingController,
  onFieldSubmitted: (newValue) async {
  setState(
    () {
      //do anything with new value
      _textEditingController.clear();
    },
  );
  await Future.delayed(
          Duration(milliseconds: 200))
      .then((value) => FocusScope.of(context)
          .requestFocus(
              _currentFieldFocusNode));
  },
),

推荐阅读