在 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 strip
和Auto-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 禁用复制和粘贴