TextField小部件似乎没有"Limit"属性来限制可以键入的字符数.我如何强制要求在TextField小部件中只能提供一定数量的字符作为输入.我试着查看装修属性,并以某种方式在那里设置了可能的限制,但似乎也不起作用.有没有我应该使用的其他小工具?

推荐答案

我不得不在RSprout提到的内容中添加一个额外的代码片段.完整代码如下:

TextEditingController _controller = new TextEditingController();
String text = ""; // empty string to carry what was there before it 
onChanged
int maxLength = ...
...
new TextField(
    controller: _controller,
    onChange: (String newVal) {
        if(newVal.length <= maxLength){
            text = newVal;
        }else{
            _controller.value = new TextEditingValue(
                text: text,
                selection: new TextSelection(
                    baseOffset: maxLength,
                    extentOffset: maxLength,
                    affinity: TextAffinity.downstream,
                    isDirectional: false
                ),
                composing: new TextRange(
                    start: 0, end: maxLength
                )
            );
            _controller.text = text;
        } 
    }
);

Flutter相关问答推荐

在Flutter 动中绘制ECG图

CLI数据库连接后将SHA-1密钥添加到Firebase项目

IsScrollable为True时如何删除Flutter 选项卡栏左侧填充

当键盘在抖动中打开时,如何才能看到包装在SingleChildScrollView中的列中的最后一个小工具?

BlocBuilder仅生成一次,并在后续发出时停止重建

如何在抖动中将PNG图像转换为WebP

Riverpod 2.0-如何使用FutureOr和AutoDisposeSyncNotificationer处理api状态代码?

Flutter CarouselSlider中如何防止右图与放大的中心图重叠?

为 flutter app/firebase 保存 chatgpt api-key 的正确方法是什么

无法从一个页面导航到下一个页面 (Flutter)

在Flutter中为容器实现线性渐变背景动画

splash_screen 没有被推送到登录页面

升级到 Flutter 3.10 后,Flutter 键盘填充不起作用. Flutter 3.10 如何防止 BottomSheet 被键盘覆盖?

使 Row 中的元素保持在中间的空间,如果它们太大,则将它们包裹起来

切换 Firebase 项目后 Flutter FirebaseAuthException 'configuration-not-found'

使用 Riverpod 和 copyWith 方法更新数据类中列表中变量的值

如何显示从 MariaDB 获取的数据到列表视图

http响应在Flutter 中返回307

Android Studio 模拟器屏幕闪烁

在 Flutter Bloc 中具有称为 status 的属性的一种状态或不同的状态,哪个更可取?