Flutter中如何为TextField配置仅显示纯数字的移动端键盘?
实现纯数字PIN码式输入键盘
要解决TextInputType.number仍显示符号的问题,需要从键盘配置和输入限制两方面处理:
1. 配置纯数字键盘
把原有的keyboardType替换为TextInputType.numberWithOptions,并关闭符号和小数点支持:
keyboardType: TextInputType.numberWithOptions(signed: false, decimal: false),
这个设置会让系统弹出仅包含0-9数字的键盘,和PIN码输入场景完全匹配。
2. 限制输入仅为数字
为了彻底防止非数字内容输入,添加inputFormatters属性,用FilteringTextInputFormatter.digitsOnly过滤输入内容:
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
使用前需要导入相关包:
import 'package:flutter/services.dart';
完整代码
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; // 你的页面代码... TextField( keyboardType: TextInputType.numberWithOptions(signed: false, decimal: false), inputFormatters: [FilteringTextInputFormatter.digitsOnly], controller: usernameController, decoration: const InputDecoration( hoverColor: Colors.red, border: OutlineInputBorder( borderSide: BorderSide(), borderRadius: BorderRadius.all(Radius.circular(50))), hintText: 'Username', hintStyle: TextStyle(color: Colors.red), ), textAlign: TextAlign.center, ),
补充说明
TextInputType.numberWithOptions明确告诉系统不需要正负号、小数点这类额外符号,直接调用纯数字键盘。FilteringTextInputFormatter.digitsOnly从输入源头上限制,就算出现特殊情况(比如键盘残留符号),也无法输入到文本框里。
内容的提问来源于stack exchange,提问作者Suman Devkota
相关产品推荐
相关产品推荐

