【问题标题】:How to Clear Textfield and get back Focus to same Textfield controller on its own OnChange event in Flutter?如何在 Flutter 中的 OnChange 事件中清除 Textfield 并将焦点返回到同一个 Textfield 控制器?
【发布时间】:2020-09-09 06:20:14
【问题描述】:

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

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

谁能帮我在 Flutter 中实现它?

【问题讨论】:

  • 希望您分享您的尝试和问题,以提供更好的建议。

标签: flutter dart textfield onchange


【解决方案1】:

这很容易,因为您只需在更改时将文本设置回空。

  TextEditingController _textEditingController = TextEditingController();

  TextField(
    controller: _textEditingController,
    onChanged: (value)=> _textEditingController.text = '',
  )

这是你想要的吗?如果不是你想要的,请告诉我。

【讨论】:

  • 谢谢评论,这个解决方案只是清除文本字段,但不会再次将焦点重新移回它。
【解决方案2】:

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

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));
  },
),

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多