You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义带连字符的数字TextInputFormatter(bank3)输入异常问题

修复bank3账号输入格式重复问题

问题根源

你当前处理bank3的逻辑存在明显错误:当输入数字长度超过3位时,先将所有纯数字赋值给formattedText,随后又追加了从第3位开始的子串,导致数字重复拼接。比如输入1234时,formattedText先被赋值为1234,再加上-4,最终变成1234-4,这就是重复现象的原因。

修正后的代码

将bank3对应的代码块替换为以下逻辑,就能实现123-4567890123的格式要求:

else if (bankName == 'bank3') {
  if (newText.isNotEmpty) {
    // 先截取最多13位纯数字
    final trimmedText = newText.substring(0, newText.length < 13 ? newText.length : 13);
    if (trimmedText.length > 3) {
      // 前3位 + 连字符 + 剩余部分(最多10位)
      formattedText = '${trimmedText.substring(0, 3)}-${trimmedText.substring(3)}';
    } else {
      // 长度<=3时直接返回
      formattedText = trimmedText;
    }
  }
}

验证效果

  • 输入123后再输入第4位数字,文本框内容会变成123-4
  • 继续输入下一位数字,内容变为123-45
  • 直到输入满13位数字时,格式为123-4567890123,完全符合预期

内容的提问来源于stack exchange,提问作者Richard Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:20:17