TextEditingController _controller = new TextEditingController();
String text = ""; // empty string to carry what was there before it onChanged
int maxLength = ...
...
new TextField(
controller: _controller,
onChanged: (String newVal) {
if(newVal.length <= maxLength){
text = newVal;
}else{
_controller.text = text;
}
}
)
TextField(
keyboardType: TextInputType.number,
inputFormatters: [
LengthLimitingTextInputFormatter(n,), //n is maximum number of characters you want in textfield
],
),
9条答案
按热度按时间mutmk8jj1#
使用输入格式化程序属性
例如:
命名空间
mxg2im7a2#
您可以使用
maxLength
属性,并且仍然可以通过将counterText
设置为空字符串来隐藏底部计数器文本。pvabu6sv3#
maxLength
属性在Flutter中可用。https://docs.flutter.io/flutter/material/TextField/maxLength.html
wsewodh24#
我不得不在RSproute提到的内容中添加一个额外的代码片段。完整的代码如下:
h6my8fg25#
您可以使用TextEditingController控制有关文本字段的所有内容。因此,如果您要将此信息与来自TextField的onChanged事件配对,则可以在其中执行您喜欢的任何逻辑。例如:
我能够控制文本字段保持在指导方针内,因为如果它超过了它,它将恢复到上次类型之前的状态。
apeeds0o6#
在1.25版本中,这就更容易了。maxLengthEnforced属性需要设置为true。否则上面的响应将不起作用。
zlhcx6iw7#
您可以在输入格式化程序中设置LengthLimitingTextInputFormatter
nqwrtyyt8#
您可以使用此代码剪切来限制长度和隐藏计数器:
您可以在此处找到原始答案。
siv3szwd9#
有两种方法可以做到这一点
解决方案一
LengthLimitingTextInputFormatter
创建一个格式化程序,以防止插入的字符数超过限制。解决方案二:
如果不想在
TextField
底部显示计数器文本,则在InputDecoration
中添加空counterText
范例: