Flutter输入框TextField自定义加密星号显示

584 阅读1分钟

有时候业务上遇到一种情况,如下图所示:

image.png

页面上的输入框既能修改又能加密显示内容,我们Flutter自带的TextField有个字段是 obscureText 设置为ture的时候文本显示全部变为*号,但是没办法加密显示指定位置上的字符,这个时候就需要用到下面的插件:

pub.dev/packages/en…

这是我直接复制了官方的TextField相关源码(源码版本是3.3.9)修改得到的效果,如下图所示

image.png

使用方法如下所示:

打开 pubspec.yaml 文件,加入依赖

encryptiontextfield: ^0.0.9

image.png

然后在代码类里面

import 'package:encryptiontextfield/src/material/text_field.dart';

import 'package:encryptiontextfield/src/widgets/editable_text.dart';

EncryptionTextfield(              
maxLines: 1,             
minLines: 1,            
obscureText:false,   
startShow: 3,        
endShow: 4,           
controller: EncryptionTextEditingController(text: "abcdefghijklmn"),
obscuringCharacter:"*",             
decoration: const InputDecoration(      
hintText: '',               
contentPadding: EdgeInsets.only(left: 5),      
border: OutlineInputBorder(       
borderSide: BorderSide.none)),        
style: TextStyle(                
color: Color(0xFFF55C04), fontSize: 30),     
),

总共三个参数:

startShow:从开头到第几位显示,其他则加密

endShow:从末尾开始到第几位显示,其他则加密,与startShow可以共存

middleHideRange:传入一个数组[3,6],加密中间几位,其他显示,与startShow和endShow互斥

除了这三个参数,其他逻辑与flutter本身的TextField没有任何差别

image.png