Flutter TextField 输入框 简单使用

news2024/12/26 2:21:49

创建方式一:

///用于文本输入框
TextEditingController controller = new TextEditingController();

/// 设置TextField中显示的内容
  void setEditeInputTextFunction(String flagText) {
    controller .text = flagText;
  }

  /// 清除TextField中显示的内容
  void clearEditeInputTextFunction() {
    controller .text = "";

    ///或者使用clear方法
    controller .clear();
  }

  TextField(
    controller: controller,
    ///当TextField中输入的内容发生改变时回调
    onChanged: (value) {
      print("TextField 中输入的内容 $value");
    },
    decoration: InputDecoration(
      hintText: "提示的内容",
      helperStyle:TextStyle(
        color: Colors.red,
      ),
    ),
  ),

创建方式二:

///初始化控制器
TextEditingController controller = new TextEditingController(text: "初始化的内容");


 ///预设输入框的内容
String preText = "";


///控制 初始化的时候光标保持在文字最后
    controller = TextEditingController.fromValue(
      ///用来设置初始化时显示
      TextEditingValue(
        ///用来设置文本 controller.text = "0000"
        text: preText,

        ///设置光标的位置
        selection: TextSelection.fromPosition(
          ///用来设置文本的位置
          TextPosition(
              affinity: TextAffinity.downstream,
              /// 光标向后移动的长度
              offset: preText.length),
        ),
      ),
    );



///文本输入框
  child: TextField(
    controller: controller,
    ///当TextField中输入的内容发生改变时回调
    onChanged: (value) {
      print("TextField 中输入的内容 $value");
    },

    decoration: InputDecoration(
      hintText: "提示的内容",
      helperStyle:TextStyle(
        color: Colors.red,
      ),
    ),
  ),
TextFiel属性详解:

TextField是一个material design风格的输入框,本身有多种属性,除此之外装饰器InputDecoration也有多种属性,但都比较简单,所以不必担心,且听我娓娓道来。

const TextField({
    Key key,
    this.controller,//控制器 跟文本交互一般通过该属性
    this.focusNode,//焦点
    this.decoration = const InputDecoration(),//装饰 用来装饰外观
    TextInputType keyboardType,//键盘类型,即输入类型
    this.textInputAction,//键盘按钮
    this.textCapitalization = TextCapitalization.none,//大小写
    this.style,//样式
    this.strutStyle,
    this.textAlign = TextAlign.start,//对齐方式
    this.textDirection,
    this.autofocus = false,//自动聚焦
    this.obscureText = false,//是否隐藏文本,即显示密码类型
    this.autocorrect = true,//自动更正
    this.maxLines = 1,//最多行数,高度与行数同步
    this.minLines,//最小行数
    this.expands = false,
    this.maxLength,//最多输入数,有值后右下角就会有一个计数器
    this.maxLengthEnforced = true,
    this.onChanged,//输入改变回调
    this.onEditingComplete,//输入完成时,配合TextInputAction.done使用
    this.onSubmitted,//提交时,配合TextInputAction
    this.inputFormatters,//输入校验
    this.enabled,//是否可用
    this.cursorWidth = 2.0,//光标宽度
    this.cursorRadius,//光标圆角
    this.cursorColor,//光标颜色
    this.keyboardAppearance,
    this.scrollPadding = const EdgeInsets.all(20.0),
    this.dragStartBehavior = DragStartBehavior.start,
    this.enableInteractiveSelection,
    this.onTap,//点击事件
    this.buildCounter,
    this.scrollPhysics,
  }) 

InputDecoration 属性

const InputDecoration({
    this.icon,//左侧外的图标
    this.labelText,//悬浮提示,可代替hintText
    this.labelStyle,//悬浮提示文字的样式
    this.helperText,//帮助文字
    this.helperStyle,
    this.hintText,//输入提示
    this.hintStyle,
    this.hintMaxLines,
    this.errorText,//错误提示
    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.counter,//自定义计数器
    this.counterText,//计数文字
    this.counterStyle,//计数样式
    this.filled,//是否填充
    this.fillColor,//填充颜色
    this.errorBorder,
    this.focusedBorder,
    this.focusedErrorBorder,
    this.disabledBorder,
    this.enabledBorder,
    this.border,//边框
    this.enabled = true,
    this.semanticCounterText,
    this.alignLabelWithHint,
  })。

图标

图标有3种:

  • 左侧外的图标
              TextField(
                decoration: InputDecoration(
                  icon: Icon(Icons.person),
                ),
              ),

  • 左侧内图标
            TextField(
                decoration: InputDecoration(
                  prefixIcon: Icon(Icons.phone_android),
                ),
              ),

  • 右侧内图标
             TextField(
                decoration: InputDecoration(
                  suffixIcon: IconButton(
                    icon: Icon(Icons.close),
                    onPressed: () {
                      controller.clear();
                    },
                  ),
                ),
              ),

在右侧图标加了一个IconButton,因为带有点击事件,我们可以在点击的时候清除TextField中的内容。

以上就是图标的介绍,其实除了图标之外,对应的位置也可以显示文字或者自定义显示其他widget 比如出了prefixIcon之外还有其他3个属性,用法跟上面介绍到的自定义计数器是一样的。

   this.prefix,
   this.prefixText,
   this.prefixStyle,

提示文字

提示文字有4种:

  • 输入提示文字
            TextField(
                controller: controller,
                decoration: InputDecoration(
                  hintText: '提示内容(请输入....)',
                ),
              ),

  • 悬浮提示文字
            TextField(
                controller: controller,
                decoration: InputDecoration(
                  hintText: '请输入...',
                ),
              ),

可以看到,默认显示labelText,聚焦之后才显示hintText,所以labelText是可以取代hintText的。

  • 帮助提示文字
   TextField( 
    controller: controller, 
    decoration: InputDecoration(
    helperText: "帮助文字", 
    helperStyle: TextStyle(color: Colors.blue),
    ), 
),

一直显示在左下方

  • 错误提示文字
            TextField(
                decoration: InputDecoration.collapsed(hintText: "无下划线的输入框"),
              ),

去除下划线

            TextField(
                decoration: InputDecoration.collapsed(hintText: "无下划线的输入框"),
              ),

也可以decoration: null, 差别就是没有hintText了

边框:

               TextField(
                decoration: InputDecoration(
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.all(Radius.circular(30)),
                  ),
                ),
              ),

圆角:

               TextField(
                decoration: InputDecoration(
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.all(Radius.circular(30)),
                  ),
                ),
              ),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web服务器群集:podman与docker技术集群

目录 一、理论 1.虚拟化 2.容器 3.podman 4.docker 5.podman与docker区别 二、实验 1.部署podman 2.部署docker 三、总结 一、理论 1.虚拟化 (1)概念 虚拟化:将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离…

利用langchain-ChatGLM、langchain-TigerBot实现基于本地知识库的问答应用

目录 1 原理 2 langchain-ChatGLM的开发部署 2.1 安装环境 2.2 加载本地模型 3 langchain-TigerBot的开发部署 刷B站的时候,无意中看到吴恩达的一个langchain的教程,然后去github上搜了下,发现别人利用langchain和chatGLM做的基于本地知…

【C++11】lambda表达式 包装器

文章目录 1 lambda表达式1.1 引例1.2 lambda表达式的基本语法1.3 lambda表达式的底层原理 2 包装器3 bind 1 lambda表达式 1.1 引例 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法&#xff1a; #include <algorithm> …

docker运行 mycli

1. 制作镜像 1.1 Dockerfile: FROM python:3.8 ENV MYSQL_HOST192.168.1.108 ENV MYSQL_PWDroot RUN apt-get update && apt-get install -y less RUN pip3 install mycli ENTRYPOINT ["mycli"] 注意 python:3.8 pip3 mycli 具有版本限制的,如果改了版…

【计算机网络】1.5——计算机网络的体系结构(网络分层模型)

计算机网络的体系结构 概述 计算机网络的体系结构是计算机网络及其构建所应完成功能的精确定义 考题 不属于网络体系结构所描述的内容的是 A、网络的层次 B、每层使用的协议 C、协议的内部实现细节 D、每层必须完成的功能 这些功能的「实现细节」&#xff0c;是遵守这种体系…

Web 前端 Day 1

课程大纲&#xff1a; html 结构 css 表现 Js 行为 jquery库 &#xff08;地位下降趋势 仍旧在用&#xff09; bootstrap 前端高端只是&#xff1a;angular angularjs html 超文本标记语言 相关解释 描述网页的语言 不仅有文字&#xff0c;还有图片、音频、视频等等 超…

某网站JS加密、OB混淆与CSS反爬实战分析

1. 写在前面 最近一段时间接触了一些小说网站的业务。发现很多的小说网站&#xff0c;甚至一些小站它们的安全防护措施做的都很到位&#xff01;例如上次说到的的五秒盾也是存在于一个小说小站。今天要讲的这个网站它集JS加密、ob混淆、CSS反爬于一体 目标站点&#xff1a; aH…

用真人模型制作3D虚拟人物,岂不是更真实?

3D虚拟人物是指利用计算机技术和图形学技术创建的一种能够模拟真实人体形态、行为和语言的虚拟实体。与传统的平面图像或视频不同&#xff0c;3D虚拟人物具有立体感和真实感&#xff0c;能够在虚拟环境中实现人机交互和情感交流&#xff0c;给用户带来全新的沉浸式体验。 随着…

文件批量改名新技巧:轻松将日期插入到文件名中,整理更有序!

在数字化时代&#xff0c;我们每天都面临着大量的文件&#xff0c;而合理整理和命名这些文件对于我们的工作和生活至关重要。特别是在需要存档或分享文件时&#xff0c;具有清晰的命名规则可以极大地提升工作效率和组织性。 首先&#xff0c;进入文件批量改名高手的文件批量重…

表征材料表面性质​的第一性原理计算方法:功函数

功函数计算是指通过计算材料表面或界面上的电子结构能量差来确定材料的界面特性的方法。在材料科学和表面科学领域&#xff0c;界面的性质对于材料的功能和性能具有重要影响。通过理解和控制界面&#xff0c;可以优化材料的电子传输、光学性能、催化活性等关键特性。 功函数表示…

网络协议【图解TCP/IP(笔记二)】

文章目录 网络协议随处可见的协议协议的必要性生活中的协议计算机中的协议分组交换协议协议的标准化 网络协议 随处可见的协议 在计算机网络与信息通信领域里&#xff0c;人们经常提及“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。而LAN&#xff08;局域…

企业元宇宙虚拟场景开发公司广州华锐互动

元宇宙是一个虚拟的世界&#xff0c;可以模拟现实世界中的场景和交互方式。利用元宇宙搭建线上元宇宙互动展厅可以让企业在虚拟环境中展示产品、服务和品牌形象&#xff0c;与客户进行互动交流&#xff0c;提高企业的知名度和影响力。 通过搭建线上元宇宙互动展厅&#xff0c;利…

【python学习】matplotlib绘制仅有y轴的数值条码图/台阶图(隐藏特定坐标轴)

matplotlib绘制仅有y轴的数值条码图/台阶图 图形来源图形绘制思路绘图代码 图形来源 今天看文章&#xff0c;文章中有一幅图&#xff0c;图的表达形式很适合我目前的数据展示&#xff0c;于是想要用python画出来。 文章来源&#xff1a;Yun-Hua Cheng_2017_Scientific Report…

web学习笔记1

计算机&#xff1a; 课程大纲&#xff1a;html&#xff08;五条猫结构&#xff09; 结构 css 表现 JavaScript 行为 html&#xff1a;超文本标记语言 超&#xff1a;超链接&#xff0c;能从一个网页跳转到另一个网页 标记&#xff1a;文本要变成超文本&#xff0c;就需要各…

pwn05(应对简单栈溢出的常规套路)

目录 一、常规检查&#xff08;nc、file、checksec&#xff09; 二、IDA反编译&#xff0c;只找两个东西即可 1、寻找造成栈溢出的函数的地址到ebp的距离 2、 寻找我们所要利用的函数的地址&#xff08;即我们希望程序最后返回到哪里&#xff09; 三、编写并运行exp脚本 一…

eNSP-NAT网络地址转换服务

NAT网络地址转换服务 文章目录 NAT网络地址转换服务一、题目要求二、题目分析三、拓扑结构四、基础配置五、测试验证 一、题目要求 1.私网地址使用192.168.1.0/24进行子网划分 2.Telnet Server设备启动Telnet服务 3.isp设备仅配置IP地址 4.PC6,PC7,PC8均可以访问PC9 5.内网…

python 第十章 函数

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 第九章 常用操作 文章目录 系列文章目录10.1函数的作用10.2函数的使用步骤定义函数调用函数函数的注意事项 10…

Linux 内存泄漏检测的实现原理与实现

在使用没有垃圾回收的语言时&#xff08;如 C/C&#xff09;&#xff0c;可能由于忘记释放内存而导致内存被耗尽&#xff0c;这叫 内存泄漏。由于内核也需要自己管理内存&#xff0c;所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方&#xff0c;Linux 内核开发者…

抖音seo矩阵系统源码开发部署--开发文档分享

目录 一、抖音seo矩阵系统源码自研概况分析 二、 技术开发语言及功能框架 技术要求&#xff1a; 功能框架&#xff1a; 三、 抖音seo矩阵系统开发原则 四、 抖音seo矩阵系统源码开发示例 一、抖音seo矩阵系统源码自研概况分析 关于抖音seo矩阵系统源码自研&#xff0c;在开…

零零信安-DD数据泄露报警日报【第202期】

2023.07.07共发现匿名网络资讯信息79,948条&#xff1b;最近7天同比增长-20.6%&#xff1b;最近30天共发现匿名网络资讯信息2,587,590条。 北京零零信安科技有限公司成立于2020年&#xff0c;是国内首家专注于外部攻击面管理&#xff08;EASM&#xff09;的网络安全公司。基于…