当前位置: 首页 > news >正文

Flutter:封装发送验证码组件,注册页使用获取验证码并传递控制器和验证码类型

验证码:view

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'index.dart';class SendcodePage extends GetView<SendcodeController> {// 接收注册页面,传进来的手机号控制器,和发送验证码的类型final TextEditingController? mobileController;final String? type;const SendcodePage({super.key,this.mobileController,this.type});@overrideWidget build(BuildContext context) {print('父组件传进来的值${mobileController!.text},${type}');return GetBuilder<SendcodeController>(// 把值传递给SendcodeController控制器init: SendcodeController(mobileController:mobileController,type:type),id: "sendcode",builder: (_) {return GestureDetector(onTap: controller.onSendCode,child: controller.isSend ? Text(controller.title,style: TextStyle(fontSize: 14,color: Colors.grey),) : Text(controller.title,style: TextStyle(fontSize: 14,color: Color(0xfff0052d9)),),);},);}
}

验证码:controller

import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter_aidishi/models/request/user_send_code.dart';
import 'package:flutter_aidishi/utils/loading.dart';
import 'package:get/get.dart';
import '../../api/user.dart';class SendcodeController extends GetxController {// 注册页手机号控制器,获取到手机号final TextEditingController? mobileController;// 发送验证码的类型final String? type;SendcodeController({this.mobileController,this.type});String title = '发送验证码';bool isSend = false;Timer? timer;int downTime = 0;void onSendCode() async{Loading.show();if(isSend) return;var isOk = await UserApi.sendCode(UserSendCodeModel(phone: mobileController!.text,type: type));if(!isOk) return;title = '${60}秒后重新发送';isSend = true;downTime = 60;Loading.success();// 启动倒计时timer = Timer.periodic(Duration(seconds: 1), (Timer timer) {if (downTime > 0) {downTime--;title = '${downTime}秒后重新发送';update(["sendcode"]);} else {timer.cancel();title = '发送验证码';isSend = false;downTime = 0;update(["sendcode"]);}});}_initData() {update(["sendcode"]);}@overridevoid onInit() {super.onInit();}@overridevoid onReady() {super.onReady();_initData();}@overridevoid onClose() {super.onClose();}
}

注册页

Container(child: TDInput(leftLabel: '验证码',backgroundColor: Color(0xffF5F5F5),hintText: '请输入验证码',controller: controller.codeController,onChanged:(value){controller.checkLoginButtonState();},needClear:false,rightBtn: Container(// 在这里把手机号控制器,验证码的类型,传递过去。child: SendcodePage(mobileController:controller.mobileController,type:'register'),),),
),

在这里插入图片描述

相关文章:

Flutter:封装发送验证码组件,注册页使用获取验证码并传递控制器和验证码类型

验证码&#xff1a;view import package:flutter/material.dart; import package:get/get.dart; import index.dart;class SendcodePage extends GetView<SendcodeController> {// 接收注册页面&#xff0c;传进来的手机号控制器&#xff0c;和发送验证码的类型final Tex…...

亚马逊IP关联是什么?

亚马逊不仅提供了广泛的商品和服务&#xff0c;也是许多企业和个人选择的电子商务平台。然而&#xff0c;与亚马逊相关的IP关联问题&#xff0c;特别是在网络安全和运营管理方面&#xff0c;经常成为使用亚马逊服务的用户和商家关注的焦点。通过了解亚马逊IP关联的含义、可能的…...

Electron + vue3 打包之后不能跳转路由

路由不跳转问题原因&#xff1a; 是因为electron需要将vue-router的mode调整为hash模式(两种写法) export default new Router({mode: hash, //这里history修改为hashscrollBehavior: () > ({y: 0}),routes: constantRouterMap, }) export default new createRouter({his…...

docker安装clickhouse副本集群

docker安装clickhouse副本集群 1、clickhouse副本集群搭建1.1、docker安装zookeeper集群1.1.1、zookeeper第一个节点安装1.1.2、zookeeper第二个节点安装1.1.3、zookeeper第三个节点安装1.1.4、zookeeper客户端命令 2、Clickhouse副本集群搭建2.1、clickhouse搭建2.2、验证集群…...

vue超过三行显示省略号和查看更多按钮

1、超过3行显示省略号和更多按钮&#xff0c;不超过3行正常显示&#xff1b; html: <div class"container"><div style"display: flex;"><div class"content"><div class"text-content" ref"textContentR…...

【软考速通笔记】系统架构设计师⑤——软件工程基础知识

文章目录 一、前言二、基础知识点2.1 软件危机2.2 软件生命周期 三、软件过程模型&#xff08;论文&#xff09;3.1 瀑布模型3.2 原型模型3.3 螺旋模型3.4 敏捷模型3.5 软件统一过程模型3.6 软件成熟度模型3.7 软件成熟度模型集成 四、需求工程五、软件测试5.1 根据程序执行状态…...

Qt 详解QRubberBand

文章目录 QRubberBand 简介前言 QRubberBand 的作用QRubberBand 的主要功能QRubberBand 的常用方法QRubberBand 的典型应用场景示例代码总结 QRubberBand 简介 前言 在 Qt 中&#xff0c;QRubberBand 是一个非常实用的控件&#xff0c;它通常用于图形界面中的“选择区域”功能…...

HTB:Love[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机开放端口进行脚本、服务扫描 使用浏览器访问靶机443端口 尝试利用该功能访问靶机自身80端口 使用ffuf对靶机80端口进行路径FUZZ 漏洞利用 使用searchsploit搜索靶机80端…...

【RabbitMQ 消息列队测试之:调试技巧】

RabbitMQ 消息列队测试之:调试技巧 1. 使用 RabbitMQ 管理界面2. 启用日志记录3. 使用 `rabbitmqctl` 命令行工具4. 检查和分析死信队列(DLQ)5. 监控系统资源6. 性能测试工具:`rabbitmq-perf-test`7. 使用工具调试消息内容8. 检查和调整消费者处理速率9. 启用长时间运行的测…...

Ubuntu FTP服务器的权限设置

在Ubuntu中设置FTP服务器的权限&#xff0c;主要涉及到用户权限管理和文件系统权限设置。以下是详细的步骤和配置方法&#xff1a; 安装FTP服务器软件 首先&#xff0c;确保已经安装了FTP服务器软件。常用的FTP服务器软件包括vsftpd和Pure-FTPd。以下是使用vsftpd作为示例的安…...

@Pattern (用于校验字符串是否符合特定正则表达式)

Pattern 是一个用于校验字符串是否符合特定正则表达式的注解&#xff0c;它在 Java 中常用于验证输入数据的格式。以下是 Pattern 注解的详解和使用方法&#xff1a; 含义 Pattern 注解用于在 Java 中对字段进行注解&#xff0c;以确保其值与指定的正则表达式匹配。这个注解可…...

5G学习笔记之随机接入

目录 1. 概述 2. MSG1 2.1 选择SSB 2.2 选择Preamble Index 2.3 选择发送Preamble的时频资源 2.4 确定RA-RNTI 2.5 确定发送功率 3. MSG2 4. MSG3 5. MSG4 6. 其它 6.1 切换中的随机接入 6.2 SI请求的随机接入 6.3 通过PDCCH order重新建立同步 1. 概述 随机接入…...

webGL入门教程_03GLSL、OpenGL、WebGL 定义及关系

GLSL、OpenGL、WebGL 定义及关系 1. 定义 1.1 GLSL&#xff08;OpenGL Shading Language&#xff09; 定义&#xff1a; GLSL 是 OpenGL 的着色器语言&#xff0c;用于编写 GPU 可编程着色器&#xff0c;定义图形渲染过程中顶点和像素&#xff08;片元&#xff09;的处理逻辑。…...

git基本操作说明

一 基本操作说明 Git常用命令&#xff1a; clone、push、add、commit、checkout、pull。 流程如下&#xff1a; 仓库说明&#xff1a; workspace&#xff1a;工作区staging area&#xff1a;暂存区/缓存区local repository&#xff1a;版本库或本地仓库remote repository&…...

微知-git如何添加空目录的几种方式?(.gitkeep, githook, gitconfig)

背景 在Git中&#xff0c;空目录&#xff08;空文件夹&#xff09;默认是不会被跟踪的&#xff0c;因为Git主要跟踪文件的变化。但是如何让git添加空目录&#xff1f; #mermaid-svg-3Y4NksLyEeuMs4FC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…...

MySQL 数据库学习教程一:开启数据库探索之旅

在当今数字化时代&#xff0c;数据已然成为企业和组织最为宝贵的资产之一。而数据库管理系统则是存储、管理和操作这些数据的核心工具。MySQL 作为一款广泛应用的开源关系型数据库管理系统&#xff0c;以其可靠性、高性能和易用性而备受青睐。如果你渴望踏入数据库领域&#xf…...

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…...

Lumos学习王佩丰Excel第十八讲:LOOKUP函数与数组

一、回顾统计函数 1、使用SUMIF函数 sumif(条件区域,求和条件,求和区域) 2、使用SUMIFS函数 SUMIFS(求和范围, 条件范围1, 条件1, 条件范围2, 条件2, ...) 二、认识数组 1、数组生成原理 所谓数组&#xff0c;是有序的元素序列。组成数组的各个变量称为数组的元素。对于Ex…...

Git的基本使用操作

文章目录 Git 全局配置基本操作Git 常用命令版本回退根据版本号回滚分支远端分支 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Git专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月1日12点50分 Git 全局配置 虽然说是全局配置&am…...

【C语言】结构体嵌套

结构体嵌套是指在一个结构体中定义另一个结构体作为其成员。这种方式可以实现更复杂的数据结构设计&#xff0c;便于对数据进行分层管理和组织&#xff0c;广泛应用于实际开发中&#xff0c;例如操作系统内核、嵌入式系统、网络协议解析等。下面是对结构体嵌套的详细介绍&#…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...