Flutter 如何在颤振中清除Textfield并在其自身的OnChange事件中将焦点恢复到同一Textfield控制器?
我在Flatter应用程序中有一个Textfield控制器,我想清除该Textfield,并在该Textfield自身的OnChange事件上传递该Textfield的值后重新聚焦 实际上,在我的应用程序中,我想使用外部设备(即连接到android设备的二维码扫描仪)连续扫描二维码。然后我想将每个新的扫描值显示到一个标签上,并在扫描新的二维码后再次更新该值Flutter 如何在颤振中清除Textfield并在其自身的OnChange事件中将焦点恢复到同一Textfield控制器?,flutter,dart,textfield,onchange,Flutter,Dart,Textfield,Onchange,我在Flatter应用程序中有一个Textfield控制器,我想清除该Textfield,并在该Textfield自身的OnChange事件上传递该Textfield的值后重新聚焦 实际上,在我的应用程序中,我想使用外部设备(即连接到android设备的二维码扫描仪)连续扫描二维码。然后我想将每个新的扫描值显示到一个标签上,并在扫描新的二维码后再次更新该值 任何人都可以帮助我在Flutter中实现它吗?这很容易,因为您只需在更改时将文本设置回空即可 TextEditingController
任何人都可以帮助我在Flutter中实现它吗?这很容易,因为您只需在更改时将文本设置回空即可
TextEditingController _textEditingController = TextEditingController();
TextField(
controller: _textEditingController,
onChanged: (value)=> _textEditingController.text = '',
)
这是你想要的吗?如果它不是您想要的,请告诉我。我实现了所需的功能,但我对这种方法不是很满意,我希望得到纠正。但你肯定能理解需要做什么
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));
},
),
我希望你能分享你的尝试和问题,给我一个更好的建议。Thnx供评论,这个解决方案只是清除了文本字段,但并没有让焦点再次回到它。