Flutter输入框实现银行卡输入 每隔四位插入知道空格分割符
Posted Code-Porter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter输入框实现银行卡输入 每隔四位插入知道空格分割符相关的知识,希望对你有一定的参考价值。
先来看下效果图吧
实现思路
1、利用输入框的TextInputFormatter的withFunction
方法来处理用户输入的内容
2、同时需要监听文本改变将光标移动至末尾
///输入框控制器
TextEditingController _controller = TextEditingController();
///输入框
CupertinoTextField(
controller: _controller,
placeholder: '请输入银行卡号',
///省略部分代码
inputFormatters: [
TextInputFormatter.withFunction(
(oldValue, newValue) =>
TextEditingValue(text: _addSeparator(newValue.text)),
),
],
onChanged: (text)
///移动光标位置
_controller.selection = TextSelection.fromPosition(
TextPosition(
offset: text.length, affinity: TextAffinity.upstream),
);
,
),
添加分隔符的方法,这里我使用的是空格分隔;你也可以换成你想要的符号
///银行卡号每四位加一个分隔符
String _addSeparator(String text, String separator = " ", int count = 4)
if (text.isEmpty) return "";
///移除了分隔符
var removeSeparator = text.replaceAll(separator, "");
var list = removeSeparator.split("");
int separatorCount = 0;
for (var i = 0; i < removeSeparator.length; i = i + count)
if (i == 0) continue;
list.insert(i + separatorCount, separator);
separatorCount++;
return list.join("");
以上是关于Flutter输入框实现银行卡输入 每隔四位插入知道空格分割符的主要内容,如果未能解决你的问题,请参考以下文章
Flutter输入框实现银行卡输入 每隔四位插入知道空格分割符