flutter 自定义微信/支付宝密码输入框

2023-11-11

如图:
在这里插入图片描述
项目需求需要实现以上效果

思路解析:

1 可以用dialog来实现
2 可以用一个新statfulWidget实现

因为不大熟悉dialog,故用了一个新的statefulWidget来实现页面效果,直接上代码:

///
/// 功能:
/// 描述:设置密码弹框功能
/// crated by xudailong on 2020/3/10.
///
class MineDestorySetPwdPage extends StatefulWidget {
  @override
  _MineDestorySetPwdPageState createState() => _MineDestorySetPwdPageState();
}

class _MineDestorySetPwdPageState extends State<MineDestorySetPwdPage> {

  String pwdData = '';

  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  bool showError = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.transparent, //把scaffold的背景色改成透明
      body: Container(
        color: MyColor.lightColor,
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.height,
        alignment: Alignment.bottomLeft,
        child: Column(
          children: <Widget>[

            Container(
              width: MediaQuery.of(context).size.width,
              height: 150,
            ),
            Container(
              height: 180,
              width: 300,
              child: Column(
                children: <Widget>[
                  GestureDetector(
                    child: Container(
                      alignment: Alignment.topRight,
                      child: Image.asset(ImageUtil.getLocalPath(ImageConstant.icon_pass_close),width: 10,height: 10,),
                      padding: EdgeInsets.only(right:MyDimen.baseRight,top: MyDimen.baseLeft ),
                    ),
                    onTap: (){
                      Navigator.of(context).pop();
                    },
                    behavior: HitTestBehavior.opaque,
                  ),
                  Container(
                    child: Text('请输入账户密码',style: TextStyle(fontSize: MyDimen.dp14,color: MyColor.norFontColor,fontFamily: MyFont.nboldFont,fontWeight: FontWeight.w600),),
                  ),
                  Container(
                    height: 50,
                    width: 250,
                    margin: EdgeInsets.only(top: MyDimen.dp30),
                    child:  CustomJPasswordField(pwdData),
                  ),
                  Container(
                    padding: EdgeInsets.only(left: MyDimen.baseLeft,right: MyDimen.baseRight,top: MyDimen.dp20),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: <Widget>[
                        showError?Text('您输入的密码有误',style: TextStyle(fontSize: MyDimen.dp12,color: MyColor.redNumFontColor,fontFamily: MyFont.nboldFont,fontWeight: FontWeight.w500),):Container(),
                        GestureDetector(
                          child: Text('忘记密码',style: TextStyle(fontSize: MyDimen.dp12,color: MyColor.norFontColor,fontFamily: MyFont.nboldFont,fontWeight: FontWeight.w500),),
                          onTap: (){
                            RouteUtil.jump2AccountPwd(context);
                          },
                          behavior: HitTestBehavior.opaque,
                        )
                      ],
                    ),
                  ),
                ],
              ),
              decoration: BoxDecoration(
                  color: MyColor.bg_white,
                  borderRadius: BorderRadius.all(Radius.circular(10))
              ),
            ),
            Expanded(
              flex: 1,
              child: Container(),
            ),
            Align(
              child: Container(
                height: 200,
                width: MediaQuery.of(context).size.width,
                color: MyColor.bg_white,
                alignment: Alignment.bottomCenter,
                child: MyKeyboard(_onKeyDown),
              ),
              alignment: Alignment.bottomCenter,
            )
          ],
        ),
      ),
    );
  }

欢迎阅读:免费搭建个人博客:https://blog.csdn.net/xudailong_blog/article/details/78762262

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flutter 自定义微信/支付宝密码输入框 的相关文章

随机推荐

  • html checked属性值,HTML复选框的checked属性的值是多少?

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 我们都知道如何在HTML中构成复选框输入 我不知道 选中复选框的技术上正确的值是多少 我已经看到了这些工作 答案是无关紧要的 我没有看到答案标记为正确的证据 这里
  • elementUI-新增,编辑,详情组件

  • oracle的 分表 详解 -----表分区

    此文从以下几个方面来整理关于分区表的概念及操作 1 表空间及分区表的概念 2 表分区的具体作用 3 表分区的优缺点 4 表分区的几种类型及操作方法 5 对表分区的维护性操作 1 表空间及分区表的概念 表空间 是一个或多个数据文件的集合 所有
  • 1分钟解决Prim算法构造最小生成树

    数据结构期末上分必备 前言 Prim 算法构造最小生成树 跟着画一遍就会了 Kruskal 请移步 kruskal 题目 设有如下图所示的无向连通图 从顶点A出发 使用 Prim 算法构造最小生成树 依次画出每次挑选出的边及权值 题解 从顶
  • 评估指标 -- Precision(查准率), Recall(查全率)和F1 score; PR曲线和mAP; ROC曲线和AUC

    Precision Recall 和 F1 score Precision 查准率 精确率 Recall 查全率 召回率 查准率和查全率是互相影响的 理想情况是希望两者都高 但是一般情况下查准率高 查全率就低 查全率高 查准率就低 如果是做
  • 蓝桥杯---算法训练 大等于n的最小完全平方数(Java解法)

    题目 问题描述 输出大等于n的最小的完全平方数 若一个数能表示成某个自然数的平方的形式 则称这个数为完全平方数 Tips 注意数据范围 输入格式 一个整数n 输出格式 大等于n的最小的完全平方数 样例输入 71711 样例输出 71824
  • 组合模式-

    定义 也称为整体 部分模式 它的宗旨是通过将单个对象 叶子节点 和组合对象 树枝节点 用相同的接口进行表示 适用场景 1 希望客户端可以忽略组合对象与单个对象的差异时 2 对象层次具备整体和部分 呈树形结构 如树形菜单 操作系统目录结构 公
  • 电脑只能登录微信?但却打不开网页?不能上网怎么办?ip地址和DNS出问题了无法上网怎么办?

    描述一下问题 昨天使用了一些代理梯子 直接关机 没有关闭那个软件 今天打开电脑就出问题了 只能登录微信 但却打不开网页 今天查了很多资料都没有解决 花了2个多小时 终于可以上网了 解决办法 找到 控制面板 网络和Internet 里面的 网
  • 计算机的桌面的路径,如何设置电脑保存路径在桌面上?

    我们在使用电脑时一般都会把系统安装到C盘 而很多的桌面图标也随之产生在C盘 当桌面文件越来越多是 不仅影响开机速度 同 时我们的电脑会很卡 当系统崩溃需要重装电脑时 我们总是要通过各种办法备份桌面 如果我们把桌面路径改到其他盘符 这些烦恼就
  • 2021-06-30 暑期实训开发日志3——山大云服务器配置anaconda pytorch

    暑期实训开发日志3 山大云服务器配置anaconda pytorch 一 安装anaconda 1 获取Anaconda安装脚本 2 安装 3 环境配置 二 creat新环境并连接pycharm 三 下载pytorch 可能会遇到的问题和解
  • giaogiao教你用c语言在屏幕上打印各种图案

    今天我们用c语言来实现在屏幕上打印用 组成的图案 首先呢 我们从简单的开始 输出自定义行数的矩形 我定义了三个变量 用for循环做了一个嵌套 用n来限制i j 从而控制输出图案的大小 搞定 你看我屌么 哈哈哈哈 这只是开始 我试试来输出自定
  • win8.1 pro-64位下安装配置MinGW—64位

    1 下载MinGW w64位 http mingw w64 org doku php 点击Downloads 说明 这边使用的是在线安装方式 在网站里可以看到他安装后的文件夹 2 安装 运行mingw w64 install exe 欢迎界
  • 如何使用QMessageBox(用法举例)

    如何使用QMessageBox 用法举例 QMessageBox是Qt编程中常用的类 使用方便 下面给出该类的普通用法实例 希望对你有所帮助 1 包含头文件 include
  • 西门子S7-1200实现先进先出(FIFO)循环存储

    目录 一 使用数组存储 通过更改存入和取出的索引实现 使用LAD语言 SCL语言组合实现 1 新建函数块 FB块 2 基础变量声明 3 开始写程序 4 完整程序 END 一 使用数组存储 通过更改存入和取出的索引实现 使用LAD语言 SCL
  • VS 2022 Format on Save

    如果不将上图中的 Enable Format Document 设置为 false 则保存时 会将代码中注释的格式修改
  • 2.mybatis-plus入门案例

    2 mybatis plus入门案例 mybatis plus入门案例 2 mybatis plus入门案例 一 创建并初始化数据库 1 创建数据库 2 创建 User 表 二 初始化工程 三 添加依赖 1 引入依赖 2 idea中安装lo
  • Kali:SYN简单泛洪攻击(DOS攻击)

    Kali SYN简单泛洪攻击 原理解析 工具原理解析 正式攻击思路 攻击演示 原理解析 SYN泛洪攻击 利用三次握手的缺陷 让tcp连接始终处于未成功连接的半连接状态 攻击机仅发出第一次握手 不对返回信息进行确认 服务器由于需要不断处理连接
  • ESP8266教程4 — ESP8266 智能配网

    按照前面的教程演示 如果想要给esp8266模块联网 可以使用AT指令加上SSID和密码即可以让模块连接到无线网络上 但是对于一个投向了市场的产品而言 消费者购买了你的一个可以联网的智能产品 当他们想要使用的时候总不能让消费者也使用AT指令
  • Java多线程技术

    Java多线程技术 Java中如何实现多线程 继承Thread类 实现Runnable接口 实现Callable接口 通过继承Thread类实现多线程 继承Thread类实现多线程的步骤 继承Thread类 重写方法run 来完成其操作的
  • flutter 自定义微信/支付宝密码输入框

    如图 项目需求需要实现以上效果 思路解析 1 可以用dialog来实现 2 可以用一个新statfulWidget实现 因为不大熟悉dialog 故用了一个新的statefulWidget来实现页面效果 直接上代码 功能 描述 设置密码弹框