Dart 语言 TextField 输入框配置示例

Dart阿木 发布于 2025-06-19 8 次阅读


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,实现各种功能。