flutter TextField 输入字母自动大写:
问题描述:
要在 flutter 的 TextField 中将输入的字母自动转为大写, 搜了一下, 有的说使用 " textCapitalization: TextCapitalization.charater " 属性, 其实是不可以行的, 键盘设为小写时, 还是可以输入小写字母的. 但是我需要只允许输入大写字母
最后参考了 https://stackoverflow.com/questions/49238908/flutter-textfield-value-always-uppercase-debounce 中的解决方案:
解决方案:
使用:textController.value = textController.value.copyWith(text: value.toUpperCase());
//解决方案
TextField(
controller: textController,
onChanged: (value) {
//字符转成大写
textController.value = textController.value.copyWith(text: value.toUpperCase());
},
)
效果图:
踩坑实录:
如果直接在onChanged方法中写 textController.text = textController.text.toUpperCase() 的话, 会导致光标自动移到TextField最前方,且所有字符会是逆序的:
//此方案不可行
TextField(
controller: textController,
onChanged: (value) {
//光标自动移到TextField最前方,且所有字符会是逆序的
textController.text = textController.text.toUpperCase()
)