我想弄清楚onEdittingComplete和之间的区别onSubmitted,我不知道什么时候应该使用后者,因为前者可用于切换焦点或提交表单内容。
我尝试查看文档,但关于该onSubmitted物业的说法不多。
use*_*613 19
提交时
顾名思义,它在用户完成编辑时调用,例如按键盘上的“完成”或“发送”。回调方便地将值传递给您,因此您可以使用它来执行您的业务逻辑。同时,由于 Flutter 假设用户已经“完成”,它会隐藏屏幕键盘。
编辑完成
这更像是一个“仅供参考”,告诉您用户已完成编辑。它之前 被解雇了onSubmitted。它不会将值传递给您(虽然您在技术上可以使用控制器获取值,但这不是这里的意图),因为您仍然可以在onSubmitted. 无论如何,这两个事件都会触发。
背后的真正目的onEditingComplete是,在默认实现中,当键盘动作被认为是“完成动作”时,Flutter 会隐藏屏幕键盘,例如“完成”、“去”、“发送”或“搜索”,但如果操作是“未完成”,例如“下一个”或“上一个”,则不会隐藏键盘。(键盘操作在TextField小部件的textInputAction属性中指定。)
如果你不喜欢这种行为,你可以覆盖它。例如,“发送”在这里被认为是“完成动作”,因此在即时消息(聊天)应用程序中,用户每次发送短消息时,键盘都会折叠,这是不好的。但是如果我们将onEditingComplete回调覆盖为一个空函数,它将停止默认行为并且不会隐藏键盘。例如:
TextField(
controller: _controller,
onSubmitted: (text) {
sendMessage(text);
_controller.clear();
},
onEditingComplete: () {}, // do not hide keyboard
textInputAction: TextInputAction.send,
)
Run Code Online (Sandbox Code Playgroud)
演示:
提交时:
final ValueChanged<String> onSubmitted
Run Code Online (Sandbox Code Playgroud)
它在回调中返回TextField输入的值onSubmitted,大多数情况下在使用TextInputAction.next和TextInputAction.previous执行时用于键盘的下一个/上一个字段按钮textInputAction。
编辑完成时:
final VoidCallback onEditingComplete
Run Code Online (Sandbox Code Playgroud)
它与回调类似onSubmitted,但不会在回调中返回值,而是更新文本,然后我们可以从需要的地方controller获取值。controller
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |