第三百零三回

文章目录

  • 1. 概念介绍
  • 2. 实现方法
    • 2.1 文字信息
    • 2.2 红色边框
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何实现密码输入框"相关的内容,本章回中将介绍如何在在输入框中提示错误.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回介绍的内容还与输入框有关,输入框仍然使用TextField组件实现。我们主要介绍如何在输入框中提示错误。具体的现象是输入框下方显示错误文字信息,
同时输入框显示红色边框。这相当于使用文字信息和颜色来发出错误提示。本章回中将介绍如何实现这些错误提示。

2. 实现方法

输入框中的错误信息都是通过TextField组件的属性实现的,我们在接下来的小节中分别介绍文字信息和红色方框的实现方法。

2.1 文字信息

文字信息主要通过InputDecoration组件的errorText属性实现,同时我们需要把InputDecoration组件赋值给TextField组件的decoration属性,这样才能在
输入框下方显示文字信息。errorText属性比较特殊,当它的值为null时不会显示任何文字,当它的值不为null时就会显示文字信息,文字信息位于输入框下方,而且
文字的颜色是红色。开发人员只需要给errorText属性赋值就可以,其它的事情不需要去关注。

2.2 红色边框

红色边框主要通过InputDecoration组件的errorBorder属性实现,同时我们需要把InputDecoration组件赋值给TextField组件的decoration属性,这样才
能在输入框周围显示红色边框。errorBorder属性比较特殊,当errorText属性的值为null时不会显示红色边框,当errorText属性的值不为null时就会显示红色边
框,边框环绕在整个输入框周围。开发人员只需要给errorText属性赋值就可以,其它的事情不需要去关注。

3. 示例代码

TextField(
  obscureText: !isPasswordVisible,
  keyboardType: TextInputType.text,

  decoration: InputDecoration(
    ///这两个一起使用才有填充颜色
    filled: true,
    fillColor: Colors.grey[200],

    ///属性值不为空时(!= null)显示errorText,
    errorText: isPwdEmpty? "password is empty": null,

    ///用来去掉输入框下面的横线
    border: InputBorder.none,
    ///实现显示和隐藏密码功能
    suffixIcon: IconButton(
      icon:isPasswordVisible ? const Icon(Icons.visibility) : const Icon(Icons.visibility_off),
      onPressed: () {
        setState(() {
          isPasswordVisible = !isPasswordVisible;
        });
      },
    ),

    ///失去焦点并且errorText的值不为null时就显示
    errorBorder: OutlineInputBorder(
      borderSide: const BorderSide(color:Colors.red,width: 1),
      borderRadius: BorderRadius.circular(16),
    ),
  ),
  ///这里的值配合配合border一起实现红色边框错误提示功能
  onChanged: (value) {
    setState(() {
      if(value == "" || value.isEmpty) {
        pwdValue = "";
        isPwdEmpty = true;
      }else {
        pwdValue = value;
        isPwdEmpty = false;
      }
    });
  },
),

上面的示例代码演示了如何在输入框中提示错误,错误包含文本信息和红色方便,它们都通过isPwdEmpty这个bool类型的变量来控制,我们会在onChanged属性中判
断输入框中值,如果输入框中输入的值为空就把isPwdEmpty设置为true,同时更新组件的状态值;反之将isPwdEmpty的值设置为false。组件中的errorText属性
和errorBorder属性检查到isPwdEmpty的值为false时就会在输入框下方显示错误文字信息,同时在输入框周围显示红色边框。

4. 内容总结

最后,我们对本章回的内容做一个全面总结:

  • 输入框基于TextField组件实现,它会通过decoration属性来显示错误信息;
  • 输入框中的错误信息包信错误文字和红色方框两部分,它们会同时出现输入框中;
  • 错误信息通过InputDecoration组件的errorText属性来控制;
  • 红色方框通过InputDecoration组件的errorBorder属性来实现;
  • 我们需要在输入框的onChanged属性中判断输入的内容,然后更新TextFiled组件的状态;
    看官们,与"如何在在输入框中提示错误如何处理ListView中的事件冲突"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt加载网页崩溃 ASSERT:“m_adapterClient“ in file ...

1、软件启动后加载网页无异常,点击按钮,加载新网页时崩溃 崩溃代码: QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) { Q_UNUSED(type); return this; } 2、原因 Qt只是调用谷歌的浏览器引擎&#xff…

构建用于预警大型语言模型辅助生物威胁创建的系统

深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 。 Op…

vivado jesd204核综合错误

用204核的时候老是报如下错误。 [Opt 31-67] Problem: A LUT2 cell in the design is missing a connection on input pin I0, which is used by the LUT equation. This pin has either been left unconnected in the design or the connection was removed due to the trimm…

ubuntu 上安装和配置Apache2+Subversion

目录 一、安装Apache2和SVN 二、Apache2设置 三、subversion配置 四、创建仓库和设置权限 五、仓库备份和恢复 系统环境 Ubuntu Linux (20.04) apache2 Subversion(1.13.0) 一、安装Apache2和SVN 通过命令在线安装apache2和subversion apt-get install apache2 libap…

Maven高级知识——分模块开发、继承与聚合

目录 一、分模块设计与开发 1.1 不分模块的问题 1.2 分模块设计 二、 继承与聚合 2.1 继承 2.1.1 继承关系 2.1.2 版本锁定 2.1.2.1 场景 2.1.2.2 介绍 2.1.2.3 实现 2.1.2.4 属性配置 2.2 聚合 2.2.1 介绍 2.2.2 实现 2.3 继承与聚合对比 三、Maven打包方式(jar、w…

数据结构—动态查找

动态查找介绍 1. 动态查找的引入:当查找表以线性表的形式组织时,若对查找表进行插入、删除或排序操作,就必须移动大量的记录,当记录数很多时,这种移动的代价很大。 2. 动态查找表的设计思想:表结构本身是…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具:安装宝塔面板服务器至少一台、域名一个 前端:生成dist文件(前端运行build命令) 后端:生成jar包(maven运行package命令) 准备: 打开宝塔面板,点击进入软…

element-ui link 组件源码分享

link 组件的 api 涉及的内容不是很多,源码部分的内容也相对较简单,下面从以下这三个方面来讲解: 一、组件结构 1.1 组件结构如下图: 二、组件属性 2.1 组件主要有 type、underline、disabled、href、icon 这些属性,…

OpenCV+ moviepy + tkinter 视频车道线智能识别项目源码

项目完整源代码,使用 OpenCV 的Hough 直线检测算法,提取出道路车道线并绘制出来。通过tkinter 提供GUI界面展示效果。 1、导入相关模块 import matplotlib.pyplot as plt import numpy as np import cv2 import os import matplotlib.image as mpimg …

虚幻UE 特效-Niagara特效实战-魔法阵

回顾Niagara特效基础知识:虚幻UE 特效-Niagara特效初识 其他四篇实战:UE 特效-Niagara特效实战-烟雾、喷泉、 虚幻UE 特效-Niagara特效实战-火焰、烛火、 虚幻UE 特效-Niagara特效实战-雨天、 虚幻UE 特效-Niagara特效实战-眩晕。 本篇笔记记录了使用空模…

Scrum敏捷开发企业培训-敏捷研发管理

课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程,面向研发管理者、项目经理、产品经理、研发团队等,旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

【循环结构·js】

变量命名原则 变量名由字母、下划线、$ 或数字组成,并且必须由字母、下划线、$ 开头。 变量名不能命名为系统关键字和保留字。 JS代码在sourse里面调试 document.write(str); /*在页面上输出变量 str 的值*/数据类型的分类 为什么要标识数据类型: 不…

【Java开发岗面试】八股文—微服务、消息中间件

声明: 背景:本人为24届双非硕校招生,已经完整经历了一次秋招,拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验(主要是校招),包括我自己总结的八股文、算法、项目介绍、HR面和面试…

IT部门规划:构建高效、创新的技术引擎

序言 在当今这个信息化、数字化的时代,IT部门的重要性日益凸显。一个高效、创新的IT部门,不仅是企业稳定运营的保障,更是推动企业持续发展的核心动力。那么,如何规划一个优秀的IT部门呢? 一、明确IT部门的战略定位 …

window 安装 jenkins 编写脚本

set JAVA_HOMED:\RuanJianKaiFa\jdk\jdk11 set CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Path%JAVA_HOME%\bin; java -jar jenkins.war 下载jenkins.war包,编写一个txt文档,把脚本复制进去,修改文件后缀为.bat文件…

SpringCloud服务通信

目录 Ribbon实现服务通信 创建工程product-basic-provider(提供者) 创建工程product-img-provider(提供者) 创建工程product-detail-api(消费者) OpenFeign实现服务通信 创建工程product-detail-api-…

Linux 磁盘空间占用率100%的排查

📑前言 使用 Linux 操作系统时,可能会遇到磁盘空间不足的错误,这种错误通常会导致系统运行缓慢或崩溃。本文将介绍磁盘排查的方法。⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页&#xff1…

Redis进阶(一):持久化

持久化 何为持久化? MySQL的事务有四个比较核心的特征:原子性、一致性、持久性和隔离性,这里的持久性和持久化说的是一个事,简单来说,数据存储在硬盘上就是持久,存在内存上那就是不持久(重启之后…

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式?

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式? 如下图所示,开机后按下MENU菜单键时,发现原来的列表形式变成了菜单图标的形式,同时在按F1-F5键时,提示:HMI模式-键不可用, …

Github处理clone慢的解决方案

Github设置代理clone依然慢的解决方案 1、前提:科学上网 注意: 必须要有科学上网!必须要有科学上网!必须要有科学上网!重要的事情说三遍; 2、http/https方案(git clone时使用http&#xff09…