Flutter

Flutter TextField实践 2022-06-09 周

2022-06-09  本文已影响0人  勇往直前888

简介

TextField更像是Android的或者是前端的,跟iOS的UITextField差距有点大;
与TextFormField是不同的风格,是两种不同的组件。

两种输入框

InputDecoration

有一个名字为decoration参数,这个基本上是必须的一个参数,虽然提供了默认值,大多数情况都是要改的。这个决定了TextField的外观。

InputDecoration

TextEditingController

@override
  void dispose() {
    // Clean up the controller when the widget is removed from the
    // widget tree.
    myController.dispose();
    super.dispose();
  }

FocusNode

这个主要是用来设置焦点,焦点游标的位置等等。
如果不是必要,可以不用管这个。
这是个自找麻烦的事。

  @override
  void dispose() {
    // Clean up the focus node when the Form is disposed.
    myFocusNode.dispose();

    super.dispose();
  }

清除按钮

iOS的UITextFiled组件有个自动显示或者隐藏的清除按钮。这个啥也不用做就有功能再Flutter中实现很不容易。

//_usernameController是输入框的控制对象
_usernameController.addListener(() {
  setState(() {}); 
});

TextFormField(                  
  controller: _usernameController,
  decoration: InputDecoration(
    labelText: '用户名',
    //文本框的尾部图标
    suffixIcon: _usernameController.text.length > 0 ? IconButton(  //如果文本长度不为空则显示清除按钮
      onPressed: () {
        _usernameController.clear();
      },
      icon: Icon(Icons.cancel, color: Colors.grey)
    ) : null
  ),
)

参考文章

flutter文本输入框TextFormField后如何显示清除按钮,点击后清除输入内容?

Flutter文本输入框TextField控制器TextEditingController,TextField预设内容,获取TextField中的输入内容,兼听TextField中的内容变化

响应文本框内容的更改

焦点和文本框

Text fields

输入框及表单

上一篇下一篇

猜你喜欢

热点阅读