在 TextFormField 中禁用单词下划线

Posted

技术标签:

【中文标题】在 TextFormField 中禁用单词下划线【英文标题】:Disable Word Underlining in TextFormField 【发布时间】:2019-08-14 16:38:58 【问题描述】:

我目前正在使用 Flutter 进行应用程序设计,并且正在努力解决这个看似简单的问题。在下面创建 TextFormField 时,无论我尝试过什么,输入文本总是带有下划线。我唯一想要的是没有这个丑陋下划线的文本。

这个问题的原因可能是 android(我使用的是 Android 模拟器)会自动在像这样的输入表单中为文本添加下划线,但这只是我想到的一个想法,我不确定这是否是我与 TextFormField 斗争的真正原因。无论如何,这是我的代码和我得到的。

Here is how my TextFormField looks at the moment

Container(
              margin: EdgeInsets.only(top: 10, left: 20, right: 30),
              child: Card(
                  elevation: 5.0,
                  child: Container(
                    child: TextFormField(
                      style: TextStyle(
                          fontSize: 18.0,
                          color: const Color(0xFF757575),
                          decoration: TextDecoration.none,
                          fontWeight: FontWeight.w500,
                          fontFamily: 'Montserrat'),
                      key: formKey,
                      onSaved: (text) => _input = text,
                      decoration: InputDecoration(
                        focusedBorder: InputBorder.none,
                        enabledBorder: InputBorder.none,
                        border: InputBorder.none,
                        prefixIcon: Icon(
                          Feather.getIconData("search"),
                          color: Colors.orange,
                        ),
                      ),
                    ),
                  ))),

【问题讨论】:

你能展示一个实际和期望输出的例子吗? 这很有趣。 decoration: TextDecoration.none 肯定必须在这里解决问题。确保它不是 Android 上的预测文本的结果 - 从您的键盘设置中将其关闭,然后查看下划线是否仍然存在。 【参考方案1】:

这是由您在 Android 上使用的键盘自动完成的。

对于禁用文本更正的用户,这不会显示。

Android 模拟器上,您可以在键盘设置中将其关闭:Settings->System->Languages & Input->Virtual Keyboard->@987654329 @->Text correction. 您要查找的具体设置是Show suggestion stripAuto-correction。如果关闭这些,您将不会再看到下划线。

颤动

话虽如此,这与 Flutter 无关,您不应该可能不会关闭“这个丑陋的下划线”,因为用户希望拥有此功能。 您或许可以改用 SelectableText 小部件并手动记录键盘输入来解决这个问题,但是,这样做并没有什么意义,您会获得用户不熟悉的功能。

【讨论】:

【参考方案2】:

在这种情况下修复:

 autocorrect: false,
 enableSuggestions: false,

...热重启(不是热重载)

完整示例:

 TextField(
            controller: controller,
            keyboardType: TextInputType.text,
            textInputAction: TextInputAction.search,
            maxLines: 1,
            maxLength: 25,
            autofocus: true,
            cursorHeight: 29,
            cursorWidth: 2,
            autocorrect: false,
            enableSuggestions: false,
            textAlignVertical: TextAlignVertical.center,
            style: TextStyle(
              decoration: TextDecoration.none,
              height: 1.4,
              color: Colors.white,
              fontSize: 19,
            ),
            onChanged: (value) 
              BlocProvider.of<SearchBloc>(context).add(SearchByName(value));
            ,
            textAlign: TextAlign.left,
            decoration: new InputDecoration(
              isCollapsed: true,
              counterText: "",
              hintText: "Search",
              contentPadding: const EdgeInsets.only(left: 10),
              alignLabelWithHint: false,
              hintStyle: TextStyle(
                height: 1.5,
                color: Theme.of(context).appBarTheme.actionsIconTheme!.color,
                fontSize: 19,
                fontFamily: "Arial Rounded",
              ),
              fillColor: Colors.transparent,
              filled: false,
              isDense: false,
              border: InputBorder.none
            ),
      ),

【讨论】:

以上是关于在 TextFormField 中禁用单词下划线的主要内容,如果未能解决你的问题,请参考以下文章

iOS 5 - 有没有办法在 UITextView 中禁用自动填充但保留拼写检查(红色下划线)?

TextFormField 上的可点击图标 - 禁用 TextFormField 对图标单击的关注(颤振)

Flutter Web - TextFormField 禁用复制和粘贴

如果在颤动中获取某个日期,则禁用按钮

如何在textformfield onchange值上修剪文本

在 EditText 中输入单词时删除下划线