我试图找出onEdittingComplete和onSubmitted之间的区别,我不知道什么时候应该使用后者,因为前者可以用来切换焦点或提交表单的内容。我试着查看文档,但没有太多关于onSubmitted属性的内容。
onEdittingComplete
onSubmitted
h4cxqtbf1#
已提交
顾名思义,当用户完成编辑时,例如按下键盘上的“done”或“send”时,它会被调用。回调函数会方便地将值传递给您,因此您可以使用它执行业务逻辑。同时,由于Flutter假设用户已“完成”,因此它会隐藏屏幕上的键盘。
onEditingComplete
这更像是一个“FYI”,告诉你用户已经完成了编辑。它在**onSubmitted之前被触发。它不会传递值(虽然从技术上讲,你可以使用控制器获取值,但这不是这里的意图),因为你仍然可以在onSubmitted中处理与值相关的业务逻辑。无论如何,这两个事件都会被触发。onEditingComplete背后的真实的目的是,在默认实现中,当键盘动作被认为是“完成动作”时,Flutter隐藏屏幕上的键盘,例如“完成”,“去”,“发送”或“搜索”,但如果动作是“非完成”,则不隐藏键盘。例如“next”或“previous”。(键盘操作在TextField小部件的textInputAction属性中指定。)如果你不喜欢这种行为,你可以覆盖它。例如,“send”在这里被认为是一个“completion action”,因此在即时通讯(聊天)应用程序中,用户每次发送短消息时,键盘都会被折叠,这是不好的。但是如果我们将onEditingComplete回调函数覆盖到一个空函数,它将停止默认行为,而不会隐藏键盘。例如:
TextField
textInputAction
TextField( controller: _controller, onSubmitted: (text) { sendMessage(text); _controller.clear(); }, onEditingComplete: () {}, // do not hide keyboard textInputAction: TextInputAction.send, )
演示:
n9vozmp42#
提交时间:
final ValueChanged<String> onSubmitted
它在onSubmitted回调中返回TextField输入的值,大多数情况下,当使用TextInputAction.next和TextInputAction.previous执行textInputAction时,它用于键盘的下一个/上一个字段按钮。
TextInputAction.next
TextInputAction.previous
onEditingComplete:
final VoidCallback onEditingComplete
它类似于onSubmitted,但不会在回调函数中返回值,而是更新文本controller,然后我们可以在需要的时候从controller中获取值。
controller
bq3bfh9z3#
对于移动的,onEditingComplete在键盘关闭之前调用,onSubmitted在键盘关闭之后调用。
3条答案
按热度按时间h4cxqtbf1#
已提交
顾名思义,当用户完成编辑时,例如按下键盘上的“done”或“send”时,它会被调用。回调函数会方便地将值传递给您,因此您可以使用它执行业务逻辑。同时,由于Flutter假设用户已“完成”,因此它会隐藏屏幕上的键盘。
onEditingComplete
这更像是一个“FYI”,告诉你用户已经完成了编辑。它在**
onSubmitted
之前被触发。它不会传递值(虽然从技术上讲,你可以使用控制器获取值,但这不是这里的意图),因为你仍然可以在onSubmitted
中处理与值相关的业务逻辑。无论如何,这两个事件都会被触发。onEditingComplete
背后的真实的目的是,在默认实现中,当键盘动作被认为是“完成动作”时,Flutter隐藏屏幕上的键盘,例如“完成”,“去”,“发送”或“搜索”,但如果动作是“非完成”,则不隐藏键盘。例如“next”或“previous”。(键盘操作在TextField
小部件的textInputAction
属性中指定。)如果你不喜欢这种行为,你可以覆盖它。例如,“send”在这里被认为是一个“completion action”,因此在即时通讯(聊天)应用程序中,用户每次发送短消息时,键盘都会被折叠,这是不好的。但是如果我们将
onEditingComplete
回调函数覆盖到一个空函数,它将停止默认行为,而不会隐藏键盘。例如:演示:
n9vozmp42#
提交时间:
它在
onSubmitted
回调中返回TextField
输入的值,大多数情况下,当使用TextInputAction.next
和TextInputAction.previous
执行textInputAction
时,它用于键盘的下一个/上一个字段按钮。onEditingComplete:
它类似于
onSubmitted
,但不会在回调函数中返回值,而是更新文本controller
,然后我们可以在需要的时候从controller
中获取值。bq3bfh9z3#
对于移动的,onEditingComplete在键盘关闭之前调用,onSubmitted在键盘关闭之后调用。