Flutter TextField 控件

0.097字数 618阅读 2499

一个material design的文本字段。
1、文本字段允许用户使用硬件键盘或屏幕键盘输入文本。 只要用户更改字段中的文本,文本字段就会调用 onChanged
回调函数。如果用户指示他们已完成在字段中键入(例如,通过按下软键盘上的按钮),则文本字段调用 onSubmitted
回调函数。
2、要控制文本字段中显示的文本,请使用controller
控制器。例如,要设置文本字段的初始值,请使用已包含某些文本的controller。controller还可以控制选择和合成区域(并观察文本,选择和合成区域的变化)。
3、默认情况下,文本字段具有在文本字段下方绘制分隔符的装饰(即下划线)。您可以使用decoration属性来控制装饰,例如通过添加label或icon。如果将decoration属性设置为null,则将删除所有装饰,包括为了装饰引入的额外填充(padding)以节省标签的空间。
如果decoration
非空(这是默认设置),则文本字段要求其祖先之一为“ Material
”窗口小部件。点击TextField时,会触发在材质上绘制的墨水飞溅效果,请参阅ThemeData.splashFactory进行配置。
4、[maxLines]属性可以设置为null,删除对行数的限制。默认情况下,它是1,这意味着这是一个单行的文本字段。(maxLines)不能是零。
5、(maxLength)属性默认设置为零,这意味着文本字段中允许的字符数是不受限制的。如果设置了[maxLength],将在字段下面显示一个字符计数器,显示输入了多少字符以及允许输入多少字符。在输入[maxLength]字符后,将忽略额外的输入,除非[maxLengthEnforced]设置为false。TextField使用[LengthLimitingTextInputFormatter]强制将长度延长,这是在提供的(inputformatter)之后进行计算的,如果有的话。[maxLength]值必须为null或大于0。
7、如果将[maxLengthEnforced]设置为false,则可能输入大于[maxLength]的字符,超过限制时,错误计数器和分配器(divider)将切换到[decoration.errorStyle]。
8、[textAlign], [autofocus], [obscureText], [autocorrect], [maxLengthEnforced], [scrollPadding], [maxLines], [maxLength],and [enableInteractiveSelection] 这些参数不能为空

名称 类型 解释
controller TextEditingController 控制正在编辑的文本。如果为null,则此小部件将创建自己的TextEditingController
focusNode focusNode 控制这个小部件是否有键盘焦点。如果是null,这个小部件将创建自己的FocusNode。
decoration InputDecoration 在文本字段周围显示的装饰。默认情况下,在文本字段下绘制一条水平线,但可以其配置为显示图标icon、标签label、提示文本hint text和错误文本error text。指定null以完全删除装饰(包括由装饰引入的额外填充以节省标签空间)。默认为InputDecoration()
keyboardType TextInputType 用于指定编辑文本的键盘类型。如果[maxLines]为1 则默认为[TextInputType.text],[否则]为 [TextInputType.multiline]。
textInputAction TextInputAction 用于键盘的操作按钮类型。 如果keyboardType为TextInputType.multiline,则默认为TextInputAction.newline,否则为TextInputAction.done。
textCapitalization TextCapitalization 配置平台键盘如何选择大写或小写键盘。 仅支持文本键盘,其他键盘类型将忽略此配置。资本化是区域设置感知的。 默认为TextCapitalization.none。不能为空。
style TextStyle 用于正在编辑的文本的样式。 此文本样式也用作装饰的基本样式。 如果为null,则默认为当前主题的子标题文本样式。
textAlign TextAlign 文本应如何水平对齐。 默认为TextAlign.start,不能为null。
autofocus bool 如果没有别的内容已经获得焦点,则该文本字段是否获取焦点。如果为true,打开这个文本框立刻获得焦点。否则,只有在用户点击文本字段后才会获取焦点,显示键盘。默认值为false,不能为空。
obscureText bool 是否隐藏正在编辑的文本(例如,用于密码)。 当此参数设置为true时,文本字段中的所有字符都将替换为U + 2022 BULLET字符(•)。 默认为false,不能为空。
autocorrect bool 是否启用自动更正。 默认为true,不能为空。
maxLines int 文本展开的最大行数,必要时可换行。如果这是1(默认值),文本将不会换行,而是将水平滚动。如果这是null的,行数没有限制。如果不是null,值必须大于零。
maxLength int 文本字段中允许的最大字符数(Unicode标量值)。如果设置,字段计数器将显示在字段下方,显示已输入的字符数和允许的字数。输入maxLength字符后,将忽略其他输入,除非maxLengthEnforced设置为false。TextField使用LengthLimitingTextInputFormatter强制执行长度,该值在提供的inputFormatters(如果有)之后计算。该值必须为null或大于零。如果设置为null(默认值),则允许的字符数没有限制。空格字符(例如换行符,空格,制表符)包含在字符数中。如果maxLengthEnforced设置为false,则 可以输入多个maxLength字符,但错误计数器和分隔符将切换到decoration.errorStyle超出限制时。
maxLengthEnforced bool 如果为真,则阻止字段允许超过maxLength字符。如果设置了maxLength, maxLengthEnforced表示是否执行限制,或者仅在超过maxLength时提供字符计数器和警告。
onChanged ValueChanged<String> 当正在编辑的文本发生更改时调用
onEditingComplete VoidCallback 当用户提交可编辑内容时调用(例如,用户按下键盘上的“完成”按钮)。onEditingComplete的默认实现根据情况执行两种不同的行为:当按下完成动作时,例如“完成”、“go”、“发送”或“搜索”,用户的内容被提交给控制器(controller),然后将焦点放弃。当一个非完成动作被按下,比如"下一个"或"上一个"时,用户的内容被提交给控制器,但焦点不会被放弃,因为开发者可能会想立刻将焦点转移到提交的另一个输入组件上。
onSubmitted ValueChanged<String> 当用户指示他们已完成编辑字段中的文本时调用
inputFormatters List<TextInputFormatter> 可选的输入验证和格式化覆盖。当文本输入发生变化时,格式化程序按照提供的顺序运行。
enabled bool 如果为false, textfield将被“禁用”:它将忽略tap,其装饰将以灰色呈现。如果非null这个属性覆盖了decoration'中Decoration.enabled的装饰功能。
cursorWidth double 光标的厚度。 默认为2.0
cursorRadius Radius 光标的角应该是多圆的。 默认情况下,光标没有半径(Radius)。
cursorColor Color 绘制光标时使用的颜色。cursorColor当为null时,默认为主题。
keyboardAppearance Brightness 键盘的外观。此设置仅适用于iOS设备。如果未设置,则默认为ThemeData.primaryColorBrightness的亮度。
scrollPadding EdgeInsets 当Textfield滚动到视图中时,将填充配置到Scrollable周围的边缘。当此窗口小部件获得焦点并且不完全可见时(例如,部分地从屏幕滚动或被键盘重叠),则它将通过滚动周围的Scrollable(如果存在)来尝试使其自身可见。此值控制在滚动后TextField将位于Scrollable边缘的距离。默认为EdgeInserts.all(20.0)。
enableInteractiveSelection bool 如果为true,则长按此TextField将选择文本并显示剪切/复制/粘贴菜单,并且点击将移动文本插入符号。 默认为True。 如果为false,则将禁用大多数用于选择文本,复制和粘贴以及移动插入符号的辅助功能。