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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:38:17