Flutter:如何使用HintText但不带下划线制作TextField?


115

这就是我要做的:

在此处输入图片说明

在Flutter文本字段文档(https://flutter.io/text-input/)中,它说您可以通过传递null给装饰来删除下划线。但是,这也摆脱了提示文本。

无论文本字段是否聚焦,我都不需要任何下划线。

更新:更新了接受的答案,以反映截至2020年4月的Flutter SDK中的更改。

Answers:


77

以上答案均不适用于新的fld sdk,因为在集成了网络和桌面支持后,您需要像这样单独指定

TextFormField(
    cursorColor: Colors.black,
    keyboardType: inputType,
    decoration: new InputDecoration(
        border: InputBorder.none,
        focusedBorder: InputBorder.none,
        enabledBorder: InputBorder.none,
        errorBorder: InputBorder.none,
        disabledBorder: InputBorder.none,
        contentPadding:
            EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
        hintText: sLabel),
  )

232

像这样做:

TextField(
  decoration: new InputDecoration.collapsed(
    hintText: 'Username'
  ),
),

或者如果您需要其他东西(例如图标),请使用 InputBorder.none

InputDecoration(
    border: InputBorder.none,
    hintText: 'Username',
  ),
),

是否可以在不导入material软件包的情况下做到这一点?即Cupertino主题?
kosiara-Bartosz Kosarzycki

我想避免: InputDecoration' can't be assigned to the parameter type 'BoxDecoration'输入错误
kosiara-Bartosz Kosarzycki

13

将焦点边框更改为无

TextField(
      decoration: new InputDecoration(
          border: InputBorder.none,
          focusedBorder: InputBorder.none,
          contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
          hintText: 'Subject'
      ),
    ),

12

这是一个补充答案,其中显示了一些更完整的代码:

在此处输入图片说明

  Container(
    decoration: BoxDecoration(
      color: Colors.tealAccent,
      borderRadius:  BorderRadius.circular(32),
    ),
    child: TextField(
      decoration: InputDecoration(
        hintStyle: TextStyle(fontSize: 17),
        hintText: 'Search your trips',
        suffixIcon: Icon(Icons.search),
        border: InputBorder.none,
        contentPadding: EdgeInsets.all(20),
      ),
    ),
  ),

笔记:

  • 深色背景(代码未显示)为Colors.teal
  • InputDecoration也具有filledfillColor属性,但是我无法使它们具有拐角半径,因此我改用了容器。

3

我发现没有其他答案给出边界半径,您可以像这样简单地做,没有嵌套 Container

  TextField(
    decoration: InputDecoration(
      border: OutlineInputBorder(
        borderSide: BorderSide.none,
        borderRadius: BorderRadius.circular(20),
      ),
    ),
  );


-2
decoration: InputDecoration(
 border:OutLineInputBorder(
 borderSide:BorderSide.none
 bordeRadius: BordeRadius.circular(20.0)
 )
)

这个答案和@E有什么区别Sun一个月前的回答
杰里米·卡尼

你想要新东西吗?
SR Keshav

2
如果已经提供了答案,则无需再次提交。这样做只会给将来的读者增加噪音,因为他们需要对多个相似的答案进行分类。将来,一旦您获得了更多声誉,您就可以提升现有的答案。这是验证方法并确认解决方案有效的首选方式。
杰里米·卡尼

1
我应该指出,有时候,如果贡献者有不同的解释方式,或者想添加更多细节,他们仍然会发布类似的建议。很好 这里的问题是您似乎提供了相同的答案,但是细节较少,因此它对线程的贡献不大。
杰里米·卡尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.