简单的应用:
class _home extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _homeState();
}
}
class _homeState extends State<_home> {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
appBar: new AppBar(
title: Text("title"),
centerTitle: true,
),
body:new Column(
children: <Widget>[
TextField(//输入框Widget
autofocus: true,//是否自动获取焦点
decoration: InputDecoration(//InputDecoration:用于控制TextField的外观显示,如提示文本、背景颜色、边框等。
hintText: "用户名昵称",
prefixIcon: Icon(Icons.person),
),
),
TextField(
autofocus: false,
keyboardType: TextInputType.number,
decoration: InputDecoration(
hintText: "用户密码",
prefixIcon: Icon(Icons.lock),
),
obscureText: true,//是否隐藏输入内容
)
],
)
);
}
}
常用属性:
- controller:编辑框的控制器,通过它可以设置/获取编辑框的内容、选择编辑内容、监听编辑文本改变事件。大多数情况下我们都需要显式提供一个controller来与文本框交互。如果没有提供controller,则TextField内部会自动创建一个
- focusNode:用于控制TextField是否占有当前键盘的输入焦点。它是我们和键盘交互的一个handle。
- InputDecoration:用于控制TextField的外观显示,如提示文本、背景颜色、边框等。
- prefixIcon:输入框内侧左面的控件
- suffixIcon: 输入框内侧右面的图标.
- keyboardType:用于设置该输入框默认的键盘输入类型,取值如下:
1.TextInputType.text(普通完整键盘)
2.TextInputType.number(数字键盘)
3.TextInputType.emailAddress(带有“@”的普通键盘)
4.TextInputType.datetime(带有“/”和“:”的数字键盘)
5.TextInputType.multiline(带有选项以启用有符号和十进制模式的数字键盘)
- style:正在编辑的文本样式。
- textAlign: 输入框内编辑文本在水平方向的对齐方式。
- autofocus: 是否自动获取焦点。
- obscureText:是否隐藏正在编辑的文本,如用于输入密码的场景等,文本内容会用“•”替换。
- maxLines:输入框的最大行数,默认为1;如果为null,则无行数限制。
- maxLength和maxLengthEnforced :maxLength代表输入框文本的最大长度,设置后输入框右下角会显示输入的文本计数
- maxLengthEnforced决定当输入文本长度超过maxLength时是否阻止输入,为true时会阻止输入,为false时不会阻止输入但输入框会变红。
- onChange:输入框内容改变时的回调函数;注:内容改变事件也可以通过controller来监听。
- onEditingComplete和onSubmitted:这两个回调都是在输入框输入完成时触发,比如按了键盘的完成键(对号图标)或搜索键(🔍图标)。不同的是两个回调签名不同,onSubmitted回调是ValueChanged<String>类型,它接收当前输入内容做为参数,而onEditingComplete不接收参数。
inputFormatters:用于指定输入格式;当用户输入内容改变时,会根据指定的格式来校验。
enable:如果为false,则输入框会被禁用,禁用状态不接收输入和事件,同时显示禁用态样式(在其decoration中定义)。
cursorWidth、cursorRadius和cursorColor:这三个属性是用于自定义输入框光标宽度、圆角和颜色的。
未完待续...