TextFiled组件的API

先来看一下TextFiled的构造方法:

const TextField({
Key key,
this.controller,
this.focusNode,
this.decoration = const InputDecoration(),
TextInputType keyboardType,
this.textInputAction,
this.textCapitalization = TextCapitalization.none,
this.style,
this.textAlign = TextAlign.start, //类似Text组件
this.textDirection, //类似Text组件
this.autofocus = false,
this.obscureText = false,
this.autocorrect = true,
this.maxLines = 1,
this.maxLength,
this.maxLengthEnforced = true,
this.onChanged,
this.onEditingComplete,
this.onSubmitted,
this.inputFormatters,
this.enabled,
this.cursorWidth = 2.0,
this.cursorRadius,
this.cursorColor,
this.keyboardAppearance,
this.scrollPadding = const EdgeInsets.all(20.0),
this.enableInteractiveSelection = true,
this.onTap,
})

哇,乍一看好多配置啊,别急大兄弟,有很多我们在讲 Text 组件的时候已经讲过的,接下来我们一个一个来看这些属性:

1、controller

根据字面意思我们就可以知道,这是一个控制器,毫无疑问当然是控制 TextField 组件的了,用处有很多,可以监听输入框的输入(通过controller.addListener()),可以获取输入框的值,可以设置输入框的值等等。

TextEditingController _textEditingController = new TextEditingController();

new TextField(
controller: _textEditingController,
),
new RaisedButton(
onPressed: () {
print(_textEditingController.text);
_textEditingController.clear();
},
child: Text('清除'),
)

2、focusNode

这个属性可以用来监听输入框是否获取(失去)焦点:

FocusNode _focusNode = new FocusNode();

@override
void initState() {
super.initState();
_focusNode.addListener(_focusNodeListener);
} Future<Null> _focusNodeListener() async {
if (_focusNode.hasFocus) {
print('获取焦点');
} else {
print('失去焦点');
}
} new TextField(
focusNode: _focusNode,
)

3、decoration

这个属性用来设置输入框的一些样式,比如前后图标,提示文字,错误文字,占位文字等等,下面来看一下可以设置的东西(有点多,大家可以有需要的时候再去挨个了解):

const InputDecoration({
this.icon, //输入框前面的图片(在下划线外面)
this.labelText, //顶部提示文字(获取焦点之后会移动到输入框上方)
this.labelStyle,
this.helperText, //底部提示文字(不会移动)
this.helperStyle,
this.hintText, //占位文字
this.hintStyle,
this.errorText, //类似helperText
this.errorStyle,
this.errorMaxLines,
this.hasFloatingPlaceholder = true,
this.isDense,
this.contentPadding, //输入内容的边距,默认有一个边距,可以手动设置
this.prefixIcon, //输入框前面的图片(在下划线里面)
this.prefix,
this.prefixText,
this.prefixStyle,
this.suffixIcon, //输入框后面的图片(在下划线里面)
this.suffix,
this.suffixText,
this.suffixStyle,
this.counterText,
this.counterStyle,
this.filled,
this.fillColor,
this.errorBorder,
this.focusedBorder,
this.focusedErrorBorder,
this.disabledBorder,
this.enabledBorder,
this.border, //输入框边框线(默认是下划线,也可以是none,也可以是一个框)
this.enabled = true,
this.semanticCounterText,
})
new TextField(
decoration: InputDecoration(
labelText: '请输入手机号',
//设置输入框前面有一个电话的按钮 suffixIcon
prefixIcon: Icon(Icons.phone),
labelStyle: TextStyle(
fontSize: 14,
color: Colors.grey,
),
),
)

4、keyboardType

这个属性是设置输入框的输入类型的,类似于 Android 中的 InputType,选值有以下几个:

  • text 输入文字
  • multiline 输入文字
  • number 输入文字
  • phone 输入文字
  • datetime 输入文字
  • emailAddress 输入文字
  • url
new TextField(
keyboardType: TextInputType.number,
)

5、obscureText

这个属性用来控制显示隐藏用户输入的内容(密文/明文显示)。

6、textInputAction

这个属性用来控制弹出的键盘中右下角的按钮,这是一个枚举值,有很多种形式(下面举几个例子):

  • TextInputAction.done:完成按钮
  • TextInputAction.go:根据用户输入进行下一步按钮
  • TextInputAction.newline:换行按钮
  • TextInputAction.next:下一步按钮
  • TextInputAction.previous:上一步按钮
  • TextInputAction.search:搜索按钮
  • TextInputAction.send:发送按钮

大家可以手动试试各个枚举值的效果。

7、TextCapitalization

这个属性用来控制输入内容的大小写设置,同样是一个枚举值,来看一下具体的值及效果:

  • TextCapitalization.words:输入的每个单词的首字母大写(用空格隔开的单词)
  • TextCapitalization.characters:输入的内容全部都大写
  • TextCapitalization.sentences:输入的内容首字母大写
  • TextCapitalization.none:默认情况,什么都不设置

8、onChanged

这个属性用来监听输入框的输入,类似Android的TextWatch,但是它只有输入后的值:

new TextField(
onChanged: (String content) {
print('content--->$content');
},
)

9、cursorWidth、cursorRadius、cursorColor

这几个属性用来设置输入时候的光标。

new TextField(
decoration: InputDecoration(
hintText: '光标设置',
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey,
),
),
cursorColor: Colors.purple,
cursorWidth: 6,
cursorRadius: Radius.elliptical(2, 8),
)

当设置maxLength时,右下角会有计数器,如果不想要计数器如下设置

import 'package:flutter/services.dart';
 
maxLengthEnforced: false,
inputFormatters: [LengthLimitingTextInputFormatter(11)],

Flutter的输入框TextField的更多相关文章

  1. Flutter文本框TextField

    参数详解TextField同时也使用Text 的部分属性: 属性 作用controller 控制器,如同 Android View iddecoration 输入器装饰keyboardType 输入的 ...

  2. 第35天学习打卡(输入框 TextField监听 简易计算器,组合+内部类回顾复习 画笔 鼠标监听 窗口监听 键盘监听)

    1.输入框 TextField监听  package com.kuang.lesson02; ​ import java.awt.*; import java.awt.event.ActionEven ...

  3. Jetpack Compose学习(3)——图标(Icon) 按钮(Button) 输入框(TextField) 的使用

    原文地址: Jetpack Compose学习(3)--图标(Icon) 按钮(Button) 输入框(TextField) 的使用 | Stars-One的杂货小窝 本篇分别对常用的组件:图标(Ic ...

  4. flutter 自定义输入框组件

    一.组件分析 ui如下 根据UI分析我们需要提取哪些是动态的,可以通过传递参数得到不同的结果? 1.左侧icon 2.输入的文本 3.是否是密码框 4.输入框的控制器:如何时时得到输入框的值 二.快速 ...

  5. Flutter控制某个TextField获取焦点及失去焦点

    在项目中有时需要点击某个地方的时候让一个文本框获取焦点以弹起键盘~~比如前端经常使用的input.focus(),但是在flutter中没有.focus()这个方法~~不过我们可以通过FocusSco ...

  6. Flutter:修改TextField的高度,以及无边框圆角

    修改TextField的高度可以通过decoration: InputDecoration的contentPadding进行修改,代码如下 new TextField( decoration: Inp ...

  7. cocos2dx 3.2 解决输入框(TextField,TextFieldTTF) 中文乱码问题

    近期开发cocos2dx 项目,做一个小游戏.(个人喜欢用最新版本号) 没系统学习就是问题多多,遇到了非常多问题,比方全部的opengl api都必须在主线程中调用, 这让我在多线程载入方面吃了不少亏 ...

  8. Flutter 基础组件:输入框和表单

    前言 Material组件库中提供了输入框组件TextField和表单组件Form. 输入框TextField 接口描述 const TextField({ Key key, // 编辑框的控制器,通 ...

  9. 当Flutter遇到节流与防抖

    相信web前端的开发者都或多或少的遇到过节流与防抖的问题.函数节流和函数防抖,两者都是优化执行代码效率的一种手段.在一定时间内,代码执行的次数不一定是越多越好.相反,频繁的触发或者执行代码,会造成大量 ...

随机推荐

  1. 利用os.system 截取终端日志输出 存为txt

    # -*- coding: utf- -*- import os os.system(r"python %s/add_test.py > terminal_record.txt&quo ...

  2. P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)

    技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...

  3. redis单例模式写法

    <?php /**只看红色重点 * =========================================================== * ZW_Memory_Cache * ...

  4. Linux:Day6(下) vim编辑器

    vim编辑器 简介: vi:Visual Interface,文本编辑器 文本:ASCII,Unicode 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi VIM - Vi IMprov ...

  5. 【vue】vue +element 搭建项目,实现实时输入效果时停止输入后发送请求

    1.实现的效果 输入关键字后,根据输入的关键字实时显示搜索的结果,按回车键时也进行搜索 2.原理: 通过时间戳+定时器+一个全局变量实现.代码量很少比较易懂. 用户输入时触发keyup事件,并调用事件 ...

  6. maven install 错误

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-c ...

  7. Y7000安装驱动显卡问题

    整体 https://blog.csdn.net/la9881275/article/details/86720752 详细 https://blog.csdn.net/luteresa/articl ...

  8. 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行

    emo场景,以oracle自带库中的表emp为例: select ename,deptno from emp order by deptno; ENAME DEPTNO CLARK 10 KING 1 ...

  9. Java线程安全与锁优化

    线程安全的严谨定义: 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交题执行,也不需要进行额外的同步,或者调用方法进行其他任何操作,调用这个对象的行为都可以或者正确的结果,那么这 ...

  10. Generative Adversarial Nets[Wasserstein GAN]

    本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...