如何强制 TextFormField 仅包含大写字母? textCapitalization:TextCapitalization.characters 让用户切换回小写,因此这不足以满足我的需求。
将textInputFormatter添加到文本字段
TextField(inputFormatters: [UpperCaseTextFormatter()]),
格式化类
class UpperCaseTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(text: newValue.text.toUpperCase(), selection: newValue.selection);
}
}
只需将此添加到您的
TextFormField
inputFormatters: [UpperCaseTextFormatter()],
textCapitalization: TextCapitalization.characters,
完整代码
TextFormField(
autofillHints: [AutofillHints.name],
inputFormatters: [UpperCaseTextFormatter()],
textCapitalization: TextCapitalization.characters,
textInputAction: TextInputAction.next,
style: TextStyle(fontSize: 20),
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
horizontal: 0, vertical: 0),
labelText: "Hello World",
hintText: '',
),
),
要使键盘始终大写,您需要将这些属性设置为 TextField。
keyboardType: TextInputType.text
textCapitalization: TextCapitalization.characters