输入框组件,用于在应用程序中输入用户名、密码等。
1.maxLength
用于设置输入框可以输入的最大字符长度,并在输入框的右下角有当前输入的长度与最大长度的对比现实。
2.maxLines
设置允许展现的最大行数
3.obscureText
设置是否隐藏输入的内容,该属性常用于密码输入框。
4.enableInteractiveSelection
用于设置长按是否出现剪切、复制、粘贴菜单。
5.textCapitalization
设置输入字符的大小写
dart
TextField(textCapitalization: TextCapitalization.characters,)
6.decoration
用于设置输入框的修饰。
InputDecoration属性 | 说明 |
---|---|
icon | 设置输入框左侧显示图标 |
labelText | 设置输入框描述信息。当输入框获取焦点时默认会浮动到上方 |
helperText | 设置输入框辅助信息,位于输入框下方 |
errorText | 设置输入框中内容输入错误时的错误提示信息 |
hintText | 输入框内的提示信息 |
prefixIcon | 前缀图标 |
prefixText | 前缀文本 |
suffixText | 后缀文本 |
suffixIcon | 后缀图标 |

dart
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.blue,
primarySwatch: Colors.green,
colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
),
home: Scaffold(
appBar: AppBar(title: Text("标题栏")),
body: TextField(
decoration: InputDecoration(
icon: Icon(Icons.account_box_rounded),
labelText: "账号",
helperText: "用户名只能是字母、数字和下划线",
hintText: "请输入用户名",
prefixIcon:Icon(Icons.access_alarm),
prefixText: "0011",
),
),
),
);
}
7.inputFormatters
限制输入框的输入内容。
输入框内a-z且不超过11位
dart
inputFormatters: [
FilteringTextInputFormatter(RegExp("[a-z]"), allow: true),
LengthLimitingTextInputFormatter(11)
]
8.controller
用于获取输入框中的内容
下面,一个例子,点击确定,获取输入框中的内容,显示在text上。
dart
void main() {
runApp(MyPage());
}
class MyPage extends StatelessWidget {
const MyPage({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.blue,
primarySwatch: Colors.green,
colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyState();
}
}
class MyState extends State {
String info = "初始值";
TextEditingController textEditingController = TextEditingController();
void getValue() {
setState(() {
info = textEditingController.text;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("controller")),
body: Column(
children: [
TextField(controller: textEditingController),
Text(info),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
getValue();
},
child: Text("确定"),
),
);
}
}