Flutter TextFormField 文本在宽度超过时裁剪

Flutter TextFormField text crops when width exceeds

我在 Flutter 应用程序搜索字段中使用 TextFormField。 当我输入大于 textformfield 宽度的文本时,输入的文本被裁剪到一半,完全不可见。 请找到我下面的代码和附加的图像,以便更好地理解问题。

TextFormField(
      focusNode: focusNode,
      controller: textController,
      decoration: InputDecoration(
        border: InputBorder.none,
        icon: Icon(
          Icons.search,
        ),
        hintText: AppStrings.searchCatHint,
        hintStyle: TextStyle(
            fontSize: 17,),
      ),
      autovalidate: true,
      autocorrect: false,
      autofocus: true,
    );

问题屏幕:

我在另一个问题中也看到了类似的问题,但没有提供解决方案。 Similar issue link

根据@CarlosSR 建议正确显示文本。但是对齐问题如下。

用容器包装 textformfield:

不会出现错误:

Container(
            color: Colors.black12,
            width: 280,
            height: 45,
            child: TextFormField(
              decoration: InputDecoration(
                border: InputBorder.none,
                icon: Icon(
                  Icons.search,
                ),
                hintStyle: TextStyle(
                  fontSize: 17,),
              ),
              autovalidate: true,
              autocorrect: false,
              autofocus: true,
            ),
          ),

错误是填充我猜你是否正在使用:

Container(
            color: Colors.black12,
            width: 280,
            height: 45,
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextFormField(
                decoration: InputDecoration(
                  border: InputBorder.none,
                  icon: Icon(
                    Icons.search,
                  ),
                  hintStyle: TextStyle(
                    fontSize: 17,),
                ),
                autovalidate: true,
                autocorrect: false,
                autofocus: true,
              ),
            ),
          ),

这样您就只能在水平轴上滚动小部件,另外还可以添加填充以使文本位于您想要的位置。另一方面,我建议您检查对齐小部件。

SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: TextFormField(
      focusNode: focusNode,
      controller: textController,
      decoration: InputDecoration(
        border: InputBorder.none,
        icon: Icon(
          Icons.search,
        ),
        hintText: AppStrings.searchCatHint,
        hintStyle: TextStyle(
            fontSize: 17,),
      ),
      autovalidate: true,
      autocorrect: false,
      autofocus: true,
    ),
),
),

我也恰好有 issue.The 我注意到的事情,当我在某个硬编码高度的容器中有一个文本字段时,您可能会遇到这个 issue.Try 删除容器的高度或只需删除文本字段底部 padding.This 会有帮助。

我找到了问题的解决方案。

问题描述:输入新文字时,旧文字向左移动没有问题。

解决方案:我已使用容器包装为我的 TextFormField 指定了高度。代码如下所示。

Container(
height:40, 
child: TextFormFiled(...),
); 

这对我有用。非常感谢您的所有回复。

此问题的解决方案是使用 CupertinoTextField 小部件。你可以阅读它 here.