前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Flutter组件学习(三)—— 输入框TextFiled

Flutter组件学习(三)—— 输入框TextFiled

作者头像
用户2802329
发布于 2018-12-26 03:02:51
发布于 2018-12-26 03:02:51
2.6K00
代码可运行
举报
文章被收录于专栏:Android先生Android先生
运行总次数:0
代码可运行

序言

Google 前两天发布了 Flutter 1.0 正式版本,正式版发布之后,LZ身边越来越多的人都开始入坑了,不得不说 Flutter 框架的魅力还是很吸引人的哈,所以我们更要抓紧学习了;之前我写了两篇文章来介绍 Flutter中的Text组件Flutter中的Image组件,今天我们继续学习输入框 TextFiled 组件,话不多说,先上图:

image

TextFiled组件的API

先来看一下TextFiled的构造方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1const TextField({
 2  Key key,
 3  this.controller,
 4  this.focusNode,
 5  this.decoration = const InputDecoration(),
 6  TextInputType keyboardType,
 7  this.textInputAction,
 8  this.textCapitalization = TextCapitalization.none,
 9  this.style,
10  this.textAlign = TextAlign.start,   //类似Text组件
11  this.textDirection,   //类似Text组件
12  this.autofocus = false,
13  this.obscureText = false,
14  this.autocorrect = true,
15  this.maxLines = 1,
16  this.maxLength,
17  this.maxLengthEnforced = true,
18  this.onChanged,
19  this.onEditingComplete,
20  this.onSubmitted,
21  this.inputFormatters,
22  this.enabled,
23  this.cursorWidth = 2.0,
24  this.cursorRadius,
25  this.cursorColor,
26  this.keyboardAppearance,
27  this.scrollPadding = const EdgeInsets.all(20.0),
28  this.enableInteractiveSelection = true,
29  this.onTap,
30})

哇,乍一看好多配置啊,别急大兄弟,有很多我们在讲 Text 组件的时候已经讲过的,接下来我们一个一个来看这些属性:

1、controller

根据字面意思我们就可以知道,这是一个控制器,毫无疑问当然是控制 TextField 组件的了,用处有很多,可以监听输入框的输入(通过controller.addListener()),可以获取输入框的值,可以设置输入框的值等等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1TextEditingController _textEditingController = new TextEditingController();
 2
 3new TextField(
 4  controller: _textEditingController,
 5),
 6new RaisedButton(
 7  onPressed: () {
 8    print(_textEditingController.text);
 9    _textEditingController.clear();
10  },
11  child: Text('清除'),
12)

2、focusNode

这个属性可以用来监听输入框是否获取(失去)焦点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1FocusNode _focusNode = new FocusNode();
 2
 3@override
 4void initState() {
 5  super.initState();
 6  _focusNode.addListener(_focusNodeListener);
 7}
 8
 9Future<Null> _focusNodeListener() async {
10  if (_focusNode.hasFocus) {
11    print('获取焦点');
12  } else {
13    print('失去焦点');
14  }
15}
16
17new TextField(
18  focusNode: _focusNode,
19)

3、decoration

这个属性用来设置输入框的一些样式,比如前后图标,提示文字,错误文字,占位文字等等,下面来看一下可以设置的东西(有点多,大家可以有需要的时候再去挨个了解):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1const InputDecoration({
 2  this.icon,  //输入框前面的图片(在下划线外面)
 3  this.labelText,  //顶部提示文字(获取焦点之后会移动到输入框上方)
 4  this.labelStyle,
 5  this.helperText,  //底部提示文字(不会移动)
 6  this.helperStyle,
 7  this.hintText,  //占位文字
 8  this.hintStyle,
 9  this.errorText,  //类似helperText
10  this.errorStyle,
11  this.errorMaxLines,
12  this.hasFloatingPlaceholder = true,
13  this.isDense,
14  this.contentPadding,  //输入内容的边距,默认有一个边距,可以手动设置
15  this.prefixIcon, //输入框前面的图片(在下划线里面)
16  this.prefix,
17  this.prefixText,
18  this.prefixStyle,
19  this.suffixIcon,  //输入框后面的图片(在下划线里面)
20  this.suffix,
21  this.suffixText,
22  this.suffixStyle,
23  this.counterText,
24  this.counterStyle,
25  this.filled,
26  this.fillColor,
27  this.errorBorder,
28  this.focusedBorder,
29  this.focusedErrorBorder,
30  this.disabledBorder,
31  this.enabledBorder,
32  this.border,   //输入框边框线(默认是下划线,也可以是none,也可以是一个框)
33  this.enabled = true,
34  this.semanticCounterText,
35})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1new TextField(
 2  decoration: InputDecoration(
 3    labelText: '请输入手机号',
 4    //设置输入框前面有一个电话的按钮 suffixIcon
 5    prefixIcon: Icon(Icons.phone),
 6    labelStyle: TextStyle(
 7      fontSize: 14,
 8      color: Colors.grey,
 9    ),
10  ),
11)

4、keyboardType

这个属性是设置输入框的输入类型的,类似于 Android 中的 InputType,选值有以下几个:

  • text 输入文字
  • multiline 输入文字
  • number 输入文字
  • phone 输入文字
  • datetime 输入文字
  • emailAddress 输入文字
  • url
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1new TextField(
2  keyboardType: TextInputType.number,
3)

5、obscureText

这个属性用来控制显示隐藏用户输入的内容(密文/明文显示)。

6、textInputAction

这个属性用来控制弹出的键盘中右下角的按钮,这是一个枚举值,有很多种形式(下面举几个例子):

  • TextInputAction.done:完成按钮
  • TextInputAction.go:根据用户输入进行下一步按钮
  • TextInputAction.newline:换行按钮
  • TextInputAction.next:下一步按钮
  • TextInputAction.previous:上一步按钮
  • TextInputAction.search:搜索按钮
  • TextInputAction.send:发送按钮

大家可以手动试试各个枚举值的效果。

7、TextCapitalization

这个属性用来控制输入内容的大小写设置,同样是一个枚举值,来看一下具体的值及效果:

  • TextCapitalization.words:输入的每个单词的首字母大写(用空格隔开的单词)
  • TextCapitalization.characters:输入的内容全部都大写
  • TextCapitalization.sentences:输入的内容首字母大写
  • TextCapitalization.none:默认情况,什么都不设置

8、onChanged

这个属性用来监听输入框的输入,类似Android的TextWatch,但是它只有输入后的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1new TextField(
2  onChanged: (String content) {
3    print('content--->$content');
4  },
5)

9、cursorWidth、cursorRadius、cursorColor

这几个属性用来设置输入时候的光标。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1new TextField(
 2  decoration: InputDecoration(
 3    hintText: '光标设置',
 4    hintStyle: TextStyle(
 5      fontSize: 14,
 6      color: Colors.grey,
 7    ),
 8  ),
 9  cursorColor: Colors.purple,
10  cursorWidth: 6,
11  cursorRadius: Radius.elliptical(2, 8),
12)

代码已上传至Github:Github:https://github.com/24Kshign/FlutterWorkSpace/tree/master/flutter_element

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT先森养成记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter TextField详解
TextField是一个material design风格的输入框,本身有多种属性,除此之外装饰器InputDecoration也有多种属性,但都比较简单,所以不必担心,且听我娓娓道来。
yechaoa
2022/06/10
4.3K0
Flutter TextField详解
【Flutter 专题】64 图解基本 TextField 文本输入框 (一)
和尚最近在学习基础的 Flutter Widget,原因在于很多基础的组件有很多容易忽视的注意事项,了解并熟悉后对整体的开发认知会有所提升;今天和尚学习一下 TextField 文本输入框;
阿策小和尚
2019/10/22
4.7K0
Flutter lesson 8:输入框,时间日期选择
Flutter自带的 showDatePicker 和 showTimePicker 两个方法可以进行时间和日期的选择。
踏浪
2019/07/31
4.8K0
Flutter lesson 8:输入框,时间日期选择
Flutter | 常用组件
​ textAlign:文本的对齐方式;可以选择左对齐、右对齐还是居中。注意,对齐的参考系是Text widget本身
345
2022/02/11
11.5K0
Flutter | 常用组件
Flutter基础widgets教程-TextField篇
1 TextField TextField 是一个文本输入组件,类似 Web 上的 Input。 2 构造函数 TextField({ Key key, this.controller, this.focusNode, this.decoration = const InputDecoration(), TextInputType keyboardType, this.textInputAction, this.textCapitalization =
青年码农
2020/10/10
7680
Flutter基础widgets教程-TextField篇
【Flutter实战】文本组件及五大案例
老孟导读:大家好,这是【Flutter实战】系列文章的第二篇,这一篇讲解文本组件,文本组件包括文本展示组件(Text和RichText)和文本输入组件(TextField),基础用法和五个案例助你快速掌握。
老孟Flutter
2020/09/11
7.3K0
【Flutter实战】文本组件及五大案例
Flutter跨平台移动端开发丨Text、Button、Image、Switch、Checkbox、TextField
Material 库中的按钮点击时默认带有“水波动画”,点击事件监听通过 onPressed 属性设置,若不设置 onPressed 则按钮处于禁用状态,无点击动效也不响应点击事件
码脑
2019/05/25
2.6K0
Flutter TextField(输入控件)
可以更改角落的光标颜色,宽度和半径。 例如,这里我没有明显的原因制作一个圆形的红色光标。
毛大姑娘
2020/09/10
3.4K0
Flutter TextField(输入控件)
Flutter 全栈式——基础控件
当输入框的默认线框无法满足时,可以使用Container容器自定义边框。这时候可以将装饰器设置为InputDecoration.collapsed(hintText: 'hint')表示禁用装饰线
arcticfox
2020/06/12
3.8K0
[- Flutter 数据&状态篇 -] setState
0.1:对我而言,一个产品有四层境界 1.造都造不出来 2.它又不是不能用 <---- 3.用的时候大家都不说话 4.如丝般顺滑,易拓展,易修改,易复用 0.2:要说的话 注意:本篇是对状态
张风捷特烈
2020/04/30
1.4K0
[- Flutter 数据&状态篇 -] setState
使用 Flutter 制作地图应用
在本文中,我将向您展示如何使用 Flutter 向您的应用程序添加映射功能。对于本教程,您将不需要 google maps API,因此您无需支付任何费用,因为我们将使用另一个免费 API,所以不用多说,让我们深入研究它。
徐建国
2021/08/08
2.7K0
Flutter 入门指北之输入处理(登录界面实战)
这边需要提下的是 setState 方法,该方法只有 StatefulWidget 才有,当需要修改某个值的内容的时候,通过该方法进行修改,最后的效果图如下,当输入框文字发生变化的时候,监听的 Text 内容会随之改变,获取内容的 Text 当点击按钮了才发生变化
陈宇明
2020/12/16
2K1
【Flutter】StatefulWidget 组件 ( Image 组件 | TextField 组件 )
Image 组件有多个命名构造函数 , 可以从 文件 / 内存 / 网络 / Assets 中加载文件 , 分别对应不同的构造函数 ;
韩曙亮
2023/03/28
10.5K0
【Flutter】StatefulWidget 组件 ( Image 组件 | TextField 组件 )
Flutter中的文本输入框组件TextField
1. maxLines 最大输入行。默认为单行输入框,配置此参数后则为多行输入框;
越陌度阡
2021/01/05
5.2K0
Flutter中的文本输入框组件TextField
输入和选择
在前面的文章中我们学习了Flutter中事件的处理,包括组件的单击、双击、长按、滑动等。想必大家多其已经有了一定的认识。
flyou
2019/08/06
2.4K0
输入和选择
【Flutter 专题】65 图解基本 TextField 文本输入框 (二)
和尚刚学习了 TextField 的基本用法,今天特意学习一下 TextField InputDecoration 文本框装饰器的相关内容;
阿策小和尚
2019/10/28
4.7K0
【Flutter 专题】65 图解基本 TextField 文本输入框 (二)
Flutter&鸿蒙next中封装一个输入框组件
我们将在lib目录下创建一个新的文件,命名为custom_input.dart,用于封装输入框。
淼学派对
2024/11/04
440
Flutter&鸿蒙next中封装一个输入框组件
Flutter中的常见表单组件
在Flutter中,常见的表单组件有TextField单行文本框、TextField多行文本框、CheckBox、Radio、Switch、CheckBoxListTile、RadioListTile、SwitchListTile、Slide等。
拉维
2019/08/29
5K0
Flutter中的常见表单组件
Flutter第4天--基础控件(下)+Flex布局详解
Flutter七日游第四天:2018-12-19 天气:晴朗 零、前言 最近有些人问我怎么学的,操作这么6,有没有什么技巧。 今天一开始借助Image来给大家说一个分析的小技巧,让你不到30行代码
张风捷特烈
2018/12/27
2.2K0
《Flutter》-- 4.Flutter组件基础
Flutter开发中有一个非常重要的理念,即一切皆为组件。Flutter中Widget不仅可以表示UI元素,也可以布局元素、动画、装饰效果。
爱学习的程序媛
2022/04/07
12.6K0
《Flutter》-- 4.Flutter组件基础
相关推荐
Flutter TextField详解
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验