Flutter textField 小部件中的 onSubmitted 和 onEditingComplete 有啥区别?

Posted

技术标签:

【中文标题】Flutter textField 小部件中的 onSubmitted 和 onEditingComplete 有啥区别?【英文标题】:What is the difference between onSubmitted and onEditingComplete in Flutter textField widget?Flutter textField 小部件中的 onSubmitted 和 onEditingComplete 有什么区别? 【发布时间】:2021-12-04 18:11:58 【问题描述】:

Flutter textField 小部件中的onSubmittedonEditingComplete 有什么区别?

我的意思是,onSubmitted 已经将用户输入的值传递给我们,我们可以在提交完成时使用该值。为什么需要onEditingComplete 属性?

我也遇到了this *** post

根据本帖置顶回答,onEditingComplete 用于判断用户提交数据后键盘是隐藏还是保留。如果是这种情况,为什么 Flutter 会飞速发展以拥有一个名为 onEditingCompleteACCEPTS A FUNCTION 属性?他们可以简单地拥有像hideKeyboardAfterEditing 这样的属性,它接受真或假。

(我可能已经理解了此处提到的 Stack Overflow 帖子错误。但这就是我的想法)

有人可以帮我理解一下吗?

谢谢

【问题讨论】:

【参考方案1】:

两者在技术上是相同的,但onEditingComplete不会降低屏幕键盘(例如:聊天应用程序),onSubmitted 将降低屏幕键盘,另外onSubmitted 将返回文本字段值.

【讨论】:

感谢您的回复。我想向您澄清的一件事是,在我提到的 *** 帖子的最佳答案中,他们提到了But if we override the onEditingComplete callback to an empty function, it will stop the default behaviour and not hide the keyboard.。这意味着只有当我们将一个空函数传递给onEditingComplete 属性时,才会保留软键盘。但是您的回答说软键盘始终存在。这对我来说似乎是一个冲突。你能帮我澄清一下吗?谢谢。 onSubmitted 肯定会将焦点转移到下一个小部件,但onEditingComplete 将根据操作以两种方式运行。 1. 完成动作(send、go、submit)然后放弃焦点。 2.非完成动作(next,previous)则不放弃焦点。

以上是关于Flutter textField 小部件中的 onSubmitted 和 onEditingComplete 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Flutter TextField 小部件中垂直居中输入文本和后缀

Flutter TextField 自动完成覆盖

Flutter 中的文本字段验证

如何在 Flutter 的同一屏幕上沿 ListView 显示小部件?

Flutter - 在 AlertDialog 小部件之外点击后关闭系统键盘

在路由后,TextField单击重建/重新加载小部件