第三百一十一回

news2024/9/23 15:33:03

文章目录

  • 1. 概念介绍
  • 2. 使用方法
  • 3. 示例代码
  • 4. 内容总结

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

在这里插入图片描述

1. 概念介绍

我们在使用TextField组件作为输入框时默认情况下会自动获取光标(或者叫焦点),此时它会自动唤起系统中的输入法键盘。也可以通过组件的autoFocus属性来配置
是否自动获取光标。如果光标离开输入框时我们如何得知?这便是本章回中将要介绍的内容。

2. 使用方法

我们可以使用TextFiled组件的focusNode属性来监听光标在输入框中的变化,接下来我们将介绍详细的使用方法:

  • 创建一个FocusNode类型的对象;
  • 使用FocusNode对象的hasFocus成员来判断输入框是否获取到了光标;
  • 给FocusNode对象添加监听器,用来监听光标的变化;
  • 使用完毕后移除FocusNode对象中的监听器;
    我们常用的做法是把第二步中的内容封装成一个监听器,在监听器中判断是否获取到了光标,然后分别做不同的业务处理。我们将在后面的小节中通过示例代码来演示。

3. 示例代码

final FocusNode pwd1FocusNode = FocusNode();

void _handlePwd1FocusChanged() {
  if(!pwd1FocusNode.hasFocus) {
    setState(() {
      if(pwdValue == "" || pwdValue.isEmpty) {
        isPwdEmpty = true;
      }else {
        isPwdEmpty = false;
      }
    });
  }
}



void initState() {
  super.initState();
  ///添加监听器
  pwd1FocusNode.addListener(_handlePwd1FocusChanged);
}


void dispose() {
  ///移除监听器
  pwd1FocusNode.removeListener(_handlePwd1FocusChanged);
  pwd1FocusNode.dispose();

  super.dispose();
}

TextField(
  autofocus: true,
  keyboardType: TextInputType.number,

 ///添加光标监听器
 focusNode: pwd1FocusNode,

  ///这个值是输入框中所有的内容,而不是当前输入的某个内容
  onChanged: (value) {
    debugPrint("hello onchanged $value");
  },

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

    ///失去焦点并且errorTest的值不为null时就显示
    errorBorder: OutlineInputBorder(
      borderSide: const BorderSide(color:Colors.red,width: 1),
      borderRadius: BorderRadius.circular(16),
    ),
    ///获得售点并且errorTest的值不为null时就显示
    focusedErrorBorder: OutlineInputBorder(
      borderSide: const BorderSide(color:Colors.red,width: 1),
      borderRadius: BorderRadius.circular(16),
    ),
 
  ),
  //是否显示为密码形式,true时显示为小圆点
  obscureText: false,
),

我们在上面的示例代码中创建了FocusNode类型的对象pwd1FocusNode,并且给他添加了监听器,在页面关闭时移除监听器。我们把监听器封装成了独立的方法,在方法
中更新isPwdEmpty变量的值,这样就可以依据光标的变化来判断输入框中的值是否为空。当输入框中的内容为空时focusedErrorBorder属性对应的内容就会生效,
此时会在输入框周围显示一个红色的方框。其实,本章回的内容主要源于上一章回中内容的bug:当输入中没有任何内容时,我们把光标从当前输入框切换到其它输入框时
当前输入框不会有任何的提示。因为,我们在上一章回中介绍的错误提示是基于输入框中的内容,内容有变化时才会有错误提示,如果内容没有任何变化,那么不会有任何
的错误提示。而此时就需要监听光标变化,当内容无变化,但是光标有变化时就去做业务逻辑相关的事情,因此,我们在示例代码中给focusedErrorBorder属性赋值,
它用来在光标发生变化时而且errorText属性的值不为null时会显示该属性对应的内容,也就是一个环绕输入框的红色方框。

4. 内容总结

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

  • 创建一个FocusNode对象并且把它赋值给TextFiele组件的focusNode属性可以监听光标的状态;
  • 在FocusNode对象中添加监听器,可以随时监听光标的状态,使用完成后记得删除监听器;
  • 监听到光标状态变化后可以配合errorText和focusedErrorBorder属性在输入框周围显示红色方框;
  • 注意:如果一个页面中有多个TextField组件,那么最好创建多个FocusNode对象来监听光标的状态;
    看官们,与"如何在输入框中处理光标"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

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

相关文章

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现

盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现 前提回顾消息服务逻辑架构运作流程消息路由系统数据存储系统BitCask结构异地存储容灾 推送系统数据消费模式推、拉模式的切换 实现低延时推送快速确认消息三层存储结构HeapMemoryDirectMemory 总结和展望 前提回顾…

【Mybatis】从0学习Mybatis(2)

前言 本篇文章是从0学习Mybatis的第一篇文章,由于篇幅太长CSDN会限流,因此我打算分开两期来写,这是第二期!第一期在这儿:【Mybatis】从0学习Mybatis(1)-CSDN博客 1.什么是ResultMap结果映射&am…

力扣热门100题 - 5.最长回文子串

力扣热门100题 - 5.最长回文子串 题目描述:示例:提示:解题思路:(动态规划)代码: 题目链接:5. 最长回文子串 题目描述: 给你一个字符串 s,找到 s 中最长的回…

Python爬虫requests库详解

使用 requests 上一节中,我们了解了 urllib 的基本用法,但是其中确实有不方便的地方,比如处理网页验证和 Cookies 时,需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作,就有了更为强大的库 requests&…

「HarmonyOS」CustomDialogController自定义弹窗使用方法

需求背景: 在开发的过程中,总会遇到一些功能需要使用到弹窗进行信息的输入和修改,如用户个人信息的修改;在UI设计上每个App通常都会有各自的样式,而不是使用系统的标准样式,所以通常我们需要进行自定义弹窗…

TryHackMe-Net Sec Challenge练习

本文相关的TryHackMe实验房间链接:TryHackMe | Why Subscribe nmap nmap -T5 -p- 10.10.90.32 -T5 扫描速度 -p- 全端口扫描 答题: 这题叫我们找藏在http服务下的flag,根据上面扫出来的端口,所以我们开始搞80 这里简单介绍一下…

2.6 假期作业

分布编译 -ESc iso 1.预处理:头文件展开,宏替换,删除注释,不会查找语法错误 例:gcc -E 1.c -o 1.i 2.编译:生成汇编文件,会查找语法错误 例:gcc -S 1.i -o 1.s 3.汇编:生成二…

亚马逊认证考试系列 - 知识点 - LightSail介绍

一、引言 在当今云计算的时代,亚马逊网络服务(AWS)已成为业界领先的云服务提供商。其中,LightSail服务是AWS为简化云计算的入门和使用而推出的一项服务。它特别适合那些想要快速搭建网站、开发环境或小型应用的用户。通过LightSa…

代码随想录算法训练营第二八天 | 分割 子集

目录 复原IP地址子集子集 II LeetCode 93.复原IP地址 LeetCode 78.子集 LeetCode 90.子集II 复原IP地址 一些字符串的基本操作不会 s.insert(i 1, ‘.’); s.deleteCharAt(i 1); class Solution {List<String> result new ArrayList<>();public List<St…

EMC测试介绍

EMC测试介绍 EMC包括电磁干扰(EMI) 和抗电磁干扰(EMS)两个部分。发射干扰传导发射测试极限线以峰值检坡器测量时使用的决策树应用EN55022标准的波形示例测试仪器![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4580f693ae9a4f84891ece29681c7bf2.png) 辐射发射测试…

【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志&#xff0c;记录了对表所做的更改。快照在 Iceberg 中至关重要&#xff0c;因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本&#xff0c;Iceberg 提供了快照生命周期管理程序&#xff0c;如 expire_snapshots&#xf…

c语言--指针的传值调用和传址调用

目录 一、前言二、传值调用。三、传址调用四、总结 一、前言 学习指针的目的是使用指针解决问题&#xff0c;那什么问题&#xff0c;非指针不可呢&#xff1f; 二、传值调用。 写个函数&#xff0c;交换两个整数的内容。 #include<stdio.h> void Swap1(int x, int y)…

【halcon】write_image 图片保存

前言 write_image 是一个可以用来保存图片的算子&#xff0c;可以将Image对象保存成各种格式的图片。还可以对图片进行压缩。 正文 参数&#xff1a; Image&#xff08;输入对象&#xff09;&#xff1a; 输入图像或输入图像的数组。支持的像素类型包括byte、direction、cy…

opencv c++ (6):直方图

1. 绘制直方图 api不在做详细介绍&#xff0c;具体看以下代码例子 #include <iostream> #include<opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std; using namespace cv;int main() {Mat src imread("src.jpg");if (src…

Qt 常见容器类用法(二)

目录 QList类 QLinkedList类 QList类 对于不同的数据类型&#xff0c;QList<T>采取不同的存储策略&#xff0c;存储策略如下&#xff1a; 如果T是一个指针类型或指针大小的基本数据类型(该基本类型占有的字节数和指针类型占有的字节数相同)&#xff0c;QList<T>…

python 爬虫安装http请求库

我的是window环境&#xff0c;安装的python3&#xff0c;如果再linux环境&#xff1a;pip install requests 开始&#xff1a; 上面我们成功发送请求并获取到响应&#xff0c;现在需要解析html或xml获取数据&#xff0c;因此我使用现成的工具库Beautiful Soup

期末账项调整

目录 一. 概念二. 期末账项调整的种类及应用三. 基本调整事项3.1 应计项目3.2 递延项目 四. 估计项目的调整 \quad 一. 概念 \quad 在会计期末对一些没有明显经济业务发生(没有原始凭证)&#xff0c;但按照权责发生制要求&#xff0c;却影响本会计期间收益的一些隐含事项进行调…

windows+vscode配置远程Linux开发环境

1.Linux运行sshd服务 安装openssh-server sudo apt install openssh-server 开启服务 sudo service ssh start 检查sshd是否开启 sudo ps -aux | grep sshd 2.vscode上安装RemoteDevelopment插件 其他依赖性会自动安装 3.配置远程Linux主机信息 Linux主机ip 4.在vscode…

必看!第六版CCF(中国计算机学会)推荐B类国际学术会议!

中国计算机学会 中国计算机学会&#xff08;CCF&#xff09;是全国性、学术性、非营利的学术团体&#xff0c;由从事计算机及相关科学技术领域的个人和单位自愿组成。作为独立社团法人&#xff0c;CCF是中国科学技术协会的成员之一&#xff0c;是全国一级学会&#xff01; CCF的…

CTF-show WEB入门--web19

今晚web19也就顺便解决了 老样子我们先打开题目看看题目提示&#xff1a; 可以看到题目提示为&#xff1a; 密钥什么的&#xff0c;就不要放在前端了 然后我们打开题目链接&#xff1a; 然后我们查看网页源代码&#xff1a; 可以发现有用的内容全在网页源代码里。 前端验证…