我是Flutter的新人.我正在寻找TextField值总是大写,但我没有找到任何资源.
另一个问题是TextField onChanged事件去抖实现.当我在TextField上键入时,它会立即触发onChanged事件,这不适合我的目标.每次更改文本后,onChange事件将在500ms后触发.
new TextField(
controller: _controller,
decoration: new InputDecoration(
hintText: 'Search here',
),
onChanged: (str) {
//need to implement debounce
}
)
Run Code Online (Sandbox Code Playgroud)
请帮我解决我的问题.提前致谢.
Div*_*mar 28
You can use textCapitalization property of a TextField widget. Also do take a reference for detailed API info here Text Capitalization Official API
Illustration as follow
Example 1
TextField(
initialValue: flutter code camp
textCapitalization: TextCapitalization.characters,
)// OUTPUT : FLUTTER CODE CAMP
Run Code Online (Sandbox Code Playgroud)
Example 2
TextField(
initialValue: flutter code camp
textCapitalization: TextCapitalization.words,
)// OUTPUT : Flutter Code Camp
Run Code Online (Sandbox Code Playgroud)
Example 3
TextField(
initialValue: flutter code camp
textCapitalization: TextCapitalization.sentences,
)// OUTPUT : Flutter code camp
Run Code Online (Sandbox Code Playgroud)
Example 4
TextField(
initialValue: flutter code camp
textCapitalization: TextCapitalization.none,
)// OUTPUT : flutter code camp
Run Code Online (Sandbox Code Playgroud)
pet*_*s J 20
也许使用textCapitalization:TextField中的TextCapitalization.characters可以帮到你吗?虽然这样可以在输入内容时将字符大写.
TextField(
textCapitalization: TextCapitalization.sentences,
)
Run Code Online (Sandbox Code Playgroud)
小智 18
你需要做的一切是:
字符串放完后 .toUpperCase()
例: "Some text".toUpperCase()
这适用于我的情况.我也是新人,所以我希望我能帮忙.
Raf*_*ñoz 11
@G\xc3\xbcnter-Z\xc3\xb6chbauer 的解决方案有效,但是当你切换到 Android 上的数字键盘时,如果你输入一个,它会再次切换到字母键盘。
\n这是因为您每次都设置一个新的 TextEditingValue。
\n相反,如果您复制最新的并更改文本,它就会起作用:
\nimport 'package:flutter/services.dart';\n\nclass UpperCaseTextFormatter extends TextInputFormatter {\n @override\n TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {\n return newValue.copyWith(text: newValue.text.toUpperCase());\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
Gün*_*uer 10
您可以实施自定义 TextInputFormatter
class UpperCaseTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(
text: newValue.text?.toUpperCase(),
selection: newValue.selection,
);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以传递给 TextFormField.inputFormatters
TextField 有一个 textCapitalization 属性,可用于将单词、句子或字符大写
如果您想将文本输入的整个值大写使用
TextField(
textCapitalization: TextCapitalization.characters,
)
Run Code Online (Sandbox Code Playgroud)
您可以TextCapitalization.characters用来使所有键入的字符都大写
TextField(
textCapitalization: TextCapitalization.characters,
)
Run Code Online (Sandbox Code Playgroud)
最简单的方法是添加 TextField 的 onChanged 事件并使用 TextField 的控制器转换为大写,就像上面一样:
TextField(
controller: controllerReservation,
onChanged: (value) {
controllerReservation.value =
TextEditingValue(
text: value.toUpperCase(),
selection: controllerReservation.selection);
},
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13578 次 |
| 最近记录: |