如上图,此类需求,身份证号码输入需要格式处理

import 'package:flutter/material.dart';class CardIdItem extends StatefulWidget {const CardIdItem({Key? key}) : super(key: key);@overrideState<CardIdItem> createState() => _CardIdItemState();
}class _CardIdItemState extends State<CardIdItem> {final TextEditingController codeEdit = TextEditingController();String _oldInputCodeText = "";@overrideWidget build(BuildContext context) {return Container(margin: const EdgeInsets.all( 20),height: 56,// color: Colors.blueAccent,child: Row(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: <Widget>[Container(width: 70,height: 30,alignment: Alignment.centerLeft,child: const Text("身份证",style: TextStyle(fontSize: 16),),),Flexible(child: TextField(controller: codeEdit,keyboardType:  const TextInputType.numberWithOptions(signed: true),maxLength: 21,obscureText:  false,onChanged: (value) {_splitPhoneNumber(value);},style: const TextStyle(fontSize: 16),decoration: const InputDecoration(// contentPadding: EdgeInsets.only(top: 4.px),counterText: "", //此处控制最大字符是否显示hintText: "请输入身份证",hintStyle: TextStyle(color: Colors.grey),enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.grey)),focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.grey)),),),),],),);}void _splitPhoneNumber(String text) {//输入身份证号格式String codeText = getIdCode(text); //去除空格//记录此时光标位置int currentSelection = codeEdit.selection.base.offset;//删除空格,相当于删除空格前一位if (_oldInputCodeText.length > text.length &&codeText.isNotEmpty &&_oldInputCodeText.substring(currentSelection, currentSelection + 1) ==" ") {String oldStartString =_oldInputCodeText.substring(0, currentSelection + 1);//定位删除空格位置oldStartString = getIdCode(oldStartString);codeText = codeText.replaceRange(oldStartString.length - 1, oldStartString.length, "");}String newCodeText = "";for (int index = 0; index < codeText.length; index++) {if (index == 5 || index == 9 || index == 13) {newCodeText = "$newCodeText${codeText[index]} ";} else {newCodeText = newCodeText + codeText[index];}}_oldInputCodeText = newCodeText;codeEdit.text = newCodeText;if (newCodeText.length > text.length) {currentSelection = currentSelection + 1;} else if (newCodeText.length < text.length) {currentSelection = currentSelection - 1;}//设置光标位置codeEdit.selection = TextSelection.fromPosition(TextPosition(affinity: TextAffinity.downstream, offset: currentSelection));}String getIdCode(String text) {return text.replaceAll(RegExp(r"\s+\b|\b\s"), "");}
}

Flutter 身份证号格式化输入相关推荐

  1. Android实战场景 - 输入手机号、银行卡号、身份证号时动态格式化

    在日常项目开发中,如果稍微严谨点的话,其中关于手机号.银行卡号.身份证号的输入格式有做了限制格式化操作,主要是为了给用户带来更好的体验感: 最近同事正好问到了我这个问题,虽然以前做过这类型功能,但是并 ...

  2. python 根据身份证号计算年龄和性别_excel如何根据身份证号计算男女出生日期、性别和年龄?分享了!...

    工作中,有时需要从身份证号中提取性别.出生日期.年龄等.如果手工统计,不仅容易出错,还耗时耗力.春暖花开的时候,有那时间不如出去踏青散步,赏花游玩. 下面小编为大家分享一种方法,使用Excel函数轻松 ...

  3. 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确

    前言: 由于在某些时候,可能需要用户输入真实的身份证号,但是用户可能会胡乱输入虚假的身份证号,导致信息的不真实性,所以为了防止用户胡乱输入,可以通过一些小方法来检测身份证号是否输入正确,本文将介绍一种 ...

  4. 火车票身份证号打码真的安全吗

    火车票身份证号4位打码安全吗? 科普居民身份证号的生成和计算方式. 如果看上面这个太抽象,那么如下方式让你明白 身份证号码作为独一无二代表公民信息的号码,它的组成是由一下的数字表示的: (1)第1.2 ...

  5. 根据身份证号获取出生日期

    先去这个地址拷贝解析身份证号码的封装方法:(直接全部拷贝) https://blog.csdn.net/weixin_44542781/article/details/116377458?spm=10 ...

  6. 使用 python 进行身份证号校验

    使用 python 代码进行身份证号校验 先说,还有很多可以优化的地方. 1.比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能提取个出生年月日啥的了. 2.比如判断加入地址数据库,增 ...

  7. 通过selenium,暴力穷举身份证号登陆某网站

    偶然发现小学女神在某大学读研,想联系一波.十多年没有联系,怎么办?发现研究生录取查询只用身份证号+姓名+验证码,身份证号学校在某些文件公布了14位,剩下四位要穷举,身份证最后一位校验位,倒数第二位性别 ...

  8. 不要在朋友圈晒火车票了,Python 会算出你的身份证号!

    事情的经过是这样的: 我的同事李大伟最近出差去了. 昨晚睡觉前翻了翻朋友圈, 就跟他愉快地 互怼 交流了起来. 估计是他想起了我朱小五从不打无把握之赌,后面就怂了. 一杯奶茶嘛,也可以接受, 像杰伦一 ...

  9. BankCardUtils(根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类)

    BankCardUtils 根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 效果图 特点 支持自动根据银行卡号获取出银行名称.银行编码.银行卡类型 ...

最新文章

  1. python numpy 欧氏距离
  2. springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
  3. 路由器与计算机IP配置,路由器设置之前 如何给电脑设置IP地址
  4. 一个智能机器人的语录
  5. 磐石云服务器_磐石云爆款高防云服务器3年仅699元 限量100台 BGP线路 1核2G
  6. tensorflow 1.0 学习:参数初始化(initializer)
  7. 【Asp.net】Cookie对象
  8. Java 8中的instanceof运算符和访客模式替换
  9. 数字农业WMS库存操作重构及思考
  10. 小心了!这18位数字一泄漏,支付宝账户就可能会被他人盗刷!
  11. 盘点劳务公司和中介所的那些黑心套路
  12. java vips 算法_[Java] 22G传智播客java JavaEE+物联云计算 就业班(非基础班) 视频...
  13. myeclipse10破解找不到common文件夹的问题
  14. java 数据抓取 动态获得cookies里变动的属性_Java爬取CSDN博客遇到setCookie问题
  15. smart bi 学习
  16. 导师吐槽大会:自己招的学生,哭着也要带完
  17. 【转】CAN总线与CANOPEN协议入门
  18. 信息安全密码学实验一:古典密码算法的设计与实现
  19. 阿里云薛冰洋:边缘云自动化测试解决方案—TestMaster
  20. SpringBoot-21-统一日志框架

热门文章

  1. 腾讯云服务器配置教程
  2. 自然数分解求最大乘积
  3. 西瓜视频“万元月薪”计划
  4. JVM内存分析工具之jmap
  5. 萨拉萨蒂-《流浪者之歌》
  6. S7-200SMART案例分析——程序框架
  7. ChatGPT提示词工程进阶教学
  8. Presto on Apache Kafka 在 Uber 的大规模应用
  9. php网页艺术设计,网站美工设计(网页美术设计主要学什么)
  10. word退格键不管用