Flutter 中的 TextField 小部件:全面指南

Flutter 中的 TextField 小部件:全面指南

在 Flutter 中,TextField 是一个允许用户输入文本的小部件。它非常灵活,支持多种文本输入场景,如单行文本、多行文本、密码输入、数值输入等。TextField 还提供了丰富的定制选项,包括文本样式、图标、控制器等。

基础用法

TextField 最基本的用法是创建一个可以输入单行文本的字段:

TextField(
  decoration: InputDecoration(
    border: OutlineInputBorder(),
    labelText: 'Enter your name',
  ),
)

这将创建一个带有标签和下划线的文本输入框。

文本输入类型

TextField 支持多种文本输入类型,通过 TextInputType 属性设置:

文本输入

TextField(
  keyboardType: TextInputType.text,
  // ... 其他属性
)

数字输入

TextField(
  keyboardType: TextInputType.number,
  // ... 其他属性
)

多行文本

TextField(
  keyboardType: TextInputType.multiline,
  maxLines: null, // 允许无限行
  // ... 其他属性
)

密码输入

TextField(
  obscureText: true, // 隐藏输入的文本
  // ... 其他属性
)

控制器和焦点

TextField 可以使用 TextEditingController 控制输入的文本,以及使用 FocusNode 管理焦点:

TextEditingController _controller = TextEditingController();
FocusNode _focusNode = FocusNode();

TextField(
  controller: _controller,
  focusNode: _focusNode,
  // ... 其他属性
)

输入装饰

InputDecoration 是一个用于定义 TextField 外观的类,包括标签、占位符文本、前缀/后缀图标、错误文本等:

TextField(
  decoration: InputDecoration(
    prefixIcon: Icon(Icons.person),
    suffixIcon: Icon(Icons.clear),
    hintText: 'Enter your name',
    errorText: 'This field is required',
    contentPadding: EdgeInsets.all(8.0),
    border: OutlineInputBorder(),
  ),
  // ... 其他属性
)

输入验证

TextField 支持输入验证,通过 TextInputFormatter 或者 validator 属性:

TextField(
  inputFormatters: [
    WhitelistingTextInputFormatter.digitsOnly, // 只允许输入数字
  ],
  validator: (value) {
    if (value == null || value.isEmpty) {
      return 'Please enter your name';
    }
    return null;
  },
  // ... 其他属性
)

自动完成和填充

TextField 支持自动完成和自动填充功能,通过 AutofillHints

TextField(
  autofillHints: [AutofillHints.name],
  // ... 其他属性
)

监听输入变化

你可以监听文本输入的变化,例如,当用户输入文本时执行一些操作:

TextField(
  onEditingComplete: () {
    // 文本输入完成时的回调
  },
  onSubmitted: (value) {
    // 文本提交时的回调
  },
  // ... 其他属性
)

高级布局

TextField 可以与其他小部件结合使用,创建复杂的表单:

Column(
  children: <Widget>[
    TextField(
      decoration: InputDecoration(
        labelText: 'Username',
      ),
    ),
    TextField(
      decoration: InputDecoration(
        labelText: 'Password',
        suffixIcon: Icon(Icons.visibility),
      ),
      obscureText: true,
    ),
    ElevatedButton(
      onPressed: () {
        // 登录按钮的回调
      },
      child: Text('Login'),
    ),
  ],
)

结语

TextField 是 Flutter 中处理文本输入的核心小部件,它提供了丰富的 API 和定制选项,使得在 Flutter 应用中实现各种文本输入场景变得简单而高效。掌握 TextField 的使用,可以帮助你创建出既美观又实用的表单界面。

相关推荐

  1. Flutter TextField 部件全面指南

    2024-05-13 22:46:04       27 阅读
  2. Flutter Row 部件全面指南

    2024-05-13 22:46:04       43 阅读
  3. Flutter Image 部件全面指南

    2024-05-13 22:46:04       35 阅读
  4. Flutter ListView 部件全面指南

    2024-05-13 22:46:04       37 阅读
  5. Flutter Visibility 部件全面指南

    2024-05-13 22:46:04       33 阅读
  6. Flutter MaterialButton 部件全面指南

    2024-05-13 22:46:04       38 阅读
  7. Flutter AnimatedIcon 部件全面指南

    2024-05-13 22:46:04       32 阅读
  8. Flutter AnimatedList 部件全面指南

    2024-05-13 22:46:04       41 阅读
  9. Flutter ExpandIcon 部件全面指南

    2024-05-13 22:46:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 22:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 22:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 22:46:04       82 阅读
  4. Python语言-面向对象

    2024-05-13 22:46:04       91 阅读

热门阅读

  1. 深度伪造音频普遍检测的Codecfake数据集和对策

    2024-05-13 22:46:04       37 阅读
  2. 代码随想录刷题记录7——力扣206,24,19题

    2024-05-13 22:46:04       32 阅读
  3. 格式化容量或速度

    2024-05-13 22:46:04       30 阅读
  4. tp8 设置空控制器和空方法

    2024-05-13 22:46:04       26 阅读
  5. NeoVim配置文件基本的

    2024-05-13 22:46:04       28 阅读
  6. spring boot常用的filter

    2024-05-13 22:46:04       28 阅读
  7. B树(B-Tree)

    2024-05-13 22:46:04       34 阅读
  8. 你写代码,会关注时间复杂度吗?

    2024-05-13 22:46:04       32 阅读