flutter - 如何在 Flutter 中的 OnChange 事件中清除 Textfield 并将焦点返回到同一个 Textfield 控制器?
问题描述
我在 Flutter App 中有一个 Textfield 控制器,我想清除该 Textfield 并在将该 Textfield 的值传递给该 Textfield 自己的 OnChange 事件后重新聚焦。
实际上,在我的应用程序中,我想使用外部设备(即连接到我们的 android 设备的 QR 码扫描仪)连续扫描 QR 码。然后我想将每个新扫描的值显示到一个标签上,并在扫描新的 QR 码后再次更新该值。
任何人都可以帮助我在 Flutter 中实现它吗?
解决方案
我实现了所需的功能,但我对这种方法并不满意,我希望以某种方式得到纠正。但是您绝对可以理解需要做什么。
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));
},
),
推荐阅读
- laravel - laravel 5.7,haproxy 和 ssl
- angular - 在 App Module 中导入 SubModule 时访问可注入值
- javascript - 在一定的窗口宽度下将元素的左边距切成两半
- java-time - DateTimeFormatter.ISO_DATE_TIME 可解析的最大时间戳是多少?
- c# - 隐藏从 C# 调用的 git-bash 窗口
- python - 按行值索引列表中的 Pandas 新列
- c++ - ZeroMQ: how to reduce multithread-communication latency with inproc?
- r - 指定试验次数,引导程序
- c - 指数限制作为指数的减法
- angular - 带有代理重定向的角度应用程序上的错误 404