有时候业务上遇到一种情况,如下图所示:
页面上的输入框既能修改又能加密显示内容,我们Flutter自带的TextField有个字段是 obscureText 设置为ture的时候文本显示全部变为*号,但是没办法加密显示指定位置上的字符,这个时候就需要用到下面的插件:
这是我直接复制了官方的TextField相关源码(源码版本是3.3.9)修改得到的效果,如下图所示
使用方法如下所示:
打开 pubspec.yaml 文件,加入依赖
encryptiontextfield: ^0.0.9
然后在代码类里面
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没有任何差别