Dart 语言 TextField 输入框配置示例详解
在 Dart 语言中,TextField 是一个常用的 UI 组件,用于接收用户输入文本。它广泛应用于各种应用程序中,如表单输入、搜索框等。本文将围绕 Dart 语言 TextField 输入框的配置进行详细讲解,包括基本属性、样式定制、事件处理等,旨在帮助开发者更好地理解和应用 TextField。
1. TextField 基本使用
我们来了解如何创建一个基本的 TextField。
dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('TextField 示例'),
),
body: Center(
child: TextField(),
),
),
);
}
}
在上面的代码中,我们创建了一个简单的 Flutter 应用程序,其中包含一个居中的 TextField。TextField 没有任何样式和属性,仅显示一个默认的文本框。
2. TextField 属性配置
TextField 提供了丰富的属性,可以满足各种需求。以下是一些常用的属性:
2.1 控制文本输入
- controller:用于控制 TextField 的文本内容。
- decoration:用于设置输入框的装饰,如边框、填充颜色等。
- enabled:控制输入框是否可编辑。
dart
TextField(
controller: TextEditingController(text: '初始文本'),
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: '请输入内容',
),
enabled: true,
)
2.2 控制文本格式
- inputFormatters:用于对输入的文本进行格式化,如限制输入数字、字母等。
- maxLength:限制输入的最大长度。
dart
TextField(
inputFormatters: [
LengthLimitingTextInputFormatter(maxLength: 10),
],
maxLength: 10,
)
2.3 控制键盘类型
- keyboardType:用于设置输入框的键盘类型,如数字键盘、文本键盘等。
dart
TextField(
keyboardType: TextInputType.number,
)
3. TextField 样式定制
除了基本的属性外,TextField 还支持样式定制,包括:
- style:设置文本样式,如字体、颜色等。
- cursorColor:设置光标颜色。
- focusColor:设置焦点颜色。
dart
TextField(
style: TextStyle(color: Colors.red),
cursorColor: Colors.blue,
focusColor: Colors.green,
)
4. TextField 事件处理
TextField 支持多种事件处理,如文本变化、焦点变化等。
4.1 文本变化
- onChanged:文本内容变化时触发。
- onEditingComplete:文本编辑完成时触发。
dart
TextField(
onChanged: (value) {
print('文本变化:$value');
},
onEditingComplete: () {
print('文本编辑完成');
},
)
4.2 焦点变化
- onFocus:输入框获得焦点时触发。
- onBlur:输入框失去焦点时触发。
dart
TextField(
onFocusChange: (hasFocus) {
if (hasFocus) {
print('输入框获得焦点');
} else {
print('输入框失去焦点');
}
},
)
5. 实战案例
以下是一个使用 TextField 的实战案例,实现一个简单的登录表单。
dart
class LoginForm extends StatefulWidget {
@override
_LoginFormState createState() => _LoginFormState();
}
class _LoginFormState extends State<LoginForm> {
final TextEditingController _usernameController = TextEditingController();
final TextEditingController _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('登录表单'),
),
body: Column(
children: <Widget>[
TextField(
controller: _usernameController,
decoration: InputDecoration(
labelText: '用户名',
prefixIcon: Icon(Icons.account_circle),
),
),
SizedBox(height: 20),
TextField(
controller: _passwordController,
decoration: InputDecoration(
labelText: '密码',
prefixIcon: Icon(Icons.lock),
suffixIcon: Icon(Icons.visibility),
),
obscureText: true,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 登录逻辑
print('用户名:${_usernameController.text}');
print('密码:${_passwordController.text}');
},
child: Text('登录'),
),
],
),
);
}
}
在上述代码中,我们创建了一个包含用户名和密码输入框的登录表单。用户输入完成后,点击登录按钮将触发登录逻辑。
6. 总结
本文详细介绍了 Dart 语言中 TextField 输入框的配置和使用。通过本文的学习,开发者可以更好地掌握 TextField 的属性、样式、事件处理等,为实际开发中的应用打下坚实基础。在实际项目中,可以根据需求灵活运用 TextField,实现各种功能。
Comments NOTHING