Flutter:如何制作带有 HintText 但没有下划线的 TextField?
Flutter: how to make a TextField with HintText but no Underline?
这就是我想要做的:
在文本字段的 Flutter 文档中 (https://flutter.io/text-input/) 它说您可以通过将 null
传递给装饰来删除下划线。但是,这也摆脱了提示文本。
无论文本字段是否获得焦点,我都不想要任何下划线。
更新:更新了已接受的答案以反映截至 2020 年 4 月 Flutter SDK 的变化。
这样做:
TextField(
decoration: new InputDecoration.collapsed(
hintText: 'Username'
),
),
或者如果您需要图标等其他内容,请使用 InputBorder.none
设置边框
InputDecoration(
border: InputBorder.none,
hintText: 'Username',
),
),
将焦点边框更改为none
TextField(
decoration: new InputDecoration(
border: InputBorder.none,
focusedBorder: InputBorder.none,
contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
hintText: 'Subject'
),
),
这是一个补充答案,显示了一些更完整的代码:
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
也有 filled
和 fillColor
属性,但我无法让它们具有圆角半径,所以我使用了一个容器。
新的 flutter sdk,因为在集成 web 和桌面支持后,您需要像这样单独指定
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: "Hint here"),
)
我发现没有其他答案给出边界半径,你可以简单地这样做,没有嵌套 Container
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(20),
),
),
);
decoration: InputDecoration(
border:OutLineInputBorder(
borderSide:BorderSide.none
bordeRadius: BordeRadius.circular(20.0)
)
)
您可以使用 TextFormField widget of Flutter Form 作为您的要求。
TextFormField(
maxLines: 1,
decoration: InputDecoration(
prefixIcon: const Icon(
Icons.search,
color: Colors.grey,
),
hintText: 'Search your trips',
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
),
),
),
TextField 小部件有一个 属性 装饰,它有一个子 属性 border: InputBorder.none
。这个 属性 将删除 Flutter 应用中的 TextField
文本输入底部下划线.因此,您可以将 TextField 的 decoration
的 border
属性 设置为 InputBorder.none
,请参见此处的示例:
border: InputBorder.none
:隐藏文本输入小部件的底部下划线。
Container(
width: 280,
padding: EdgeInsets.all(8.0),
child : TextField(
autocorrect: true,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Enter Some Text Here')
)
)
Container(
height: 50,
// margin: EdgeInsets.only(top: 20),
decoration: BoxDecoration(
color: Colors.tealAccent,
borderRadius: BorderRadius.circular(32)),
child: TextFormField(
cursorColor: Colors.black,
// keyboardType: TextInputType.,
decoration: InputDecoration(
hintStyle: TextStyle(fontSize: 17),
hintText: 'Search your trips',
suffixIcon: Icon(Icons.search),
border: InputBorder.none,
contentPadding: EdgeInsets.all(18),
),
),
),
TextField(style: TextStyle(color: Colors.black45,fontSize: 18,decorationThickness: 0.0))
。
decorationThickness:0.0
显示时没有下划线。
为了制作无边框 TextFormField,我找到了以下解决方案:
没有使用容器。
TextFormField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15.0),
borderSide: BorderSide.none,
),
labelText: "Student email/id",
floatingLabelStyle: const TextStyle(
height: 4,
color: Color.fromARGB(255, 160, 26, 179)),
filled: true,
fillColor: Colors.grey[200],
prefixIcon: const Icon(Icons.person),
),
),
正常采样:
输入错误时:
当用户输入时:
这就是我想要做的:
在文本字段的 Flutter 文档中 (https://flutter.io/text-input/) 它说您可以通过将 null
传递给装饰来删除下划线。但是,这也摆脱了提示文本。
无论文本字段是否获得焦点,我都不想要任何下划线。
更新:更新了已接受的答案以反映截至 2020 年 4 月 Flutter SDK 的变化。
这样做:
TextField(
decoration: new InputDecoration.collapsed(
hintText: 'Username'
),
),
或者如果您需要图标等其他内容,请使用 InputBorder.none
InputDecoration(
border: InputBorder.none,
hintText: 'Username',
),
),
将焦点边框更改为none
TextField(
decoration: new InputDecoration(
border: InputBorder.none,
focusedBorder: InputBorder.none,
contentPadding: EdgeInsets.only(left: 15, bottom: 11, top: 11, right: 15),
hintText: 'Subject'
),
),
这是一个补充答案,显示了一些更完整的代码:
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
也有filled
和fillColor
属性,但我无法让它们具有圆角半径,所以我使用了一个容器。
新的 flutter sdk,因为在集成 web 和桌面支持后,您需要像这样单独指定
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: "Hint here"),
)
我发现没有其他答案给出边界半径,你可以简单地这样做,没有嵌套 Container
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(20),
),
),
);
decoration: InputDecoration(
border:OutLineInputBorder(
borderSide:BorderSide.none
bordeRadius: BordeRadius.circular(20.0)
)
)
您可以使用 TextFormField widget of Flutter Form 作为您的要求。
TextFormField(
maxLines: 1,
decoration: InputDecoration(
prefixIcon: const Icon(
Icons.search,
color: Colors.grey,
),
hintText: 'Search your trips',
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10.0)),
),
),
),
TextField 小部件有一个 属性 装饰,它有一个子 属性 border: InputBorder.none
。这个 属性 将删除 Flutter 应用中的 TextField
文本输入底部下划线.因此,您可以将 TextField 的 decoration
的 border
属性 设置为 InputBorder.none
,请参见此处的示例:
border: InputBorder.none
:隐藏文本输入小部件的底部下划线。
Container(
width: 280,
padding: EdgeInsets.all(8.0),
child : TextField(
autocorrect: true,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Enter Some Text Here')
)
)
Container(
height: 50,
// margin: EdgeInsets.only(top: 20),
decoration: BoxDecoration(
color: Colors.tealAccent,
borderRadius: BorderRadius.circular(32)),
child: TextFormField(
cursorColor: Colors.black,
// keyboardType: TextInputType.,
decoration: InputDecoration(
hintStyle: TextStyle(fontSize: 17),
hintText: 'Search your trips',
suffixIcon: Icon(Icons.search),
border: InputBorder.none,
contentPadding: EdgeInsets.all(18),
),
),
),
TextField(style: TextStyle(color: Colors.black45,fontSize: 18,decorationThickness: 0.0))
。 decorationThickness:0.0
显示时没有下划线。
为了制作无边框 TextFormField,我找到了以下解决方案:
没有使用容器。
TextFormField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15.0),
borderSide: BorderSide.none,
),
labelText: "Student email/id",
floatingLabelStyle: const TextStyle(
height: 4,
color: Color.fromARGB(255, 160, 26, 179)),
filled: true,
fillColor: Colors.grey[200],
prefixIcon: const Icon(Icons.person),
),
),
正常采样:
输入错误时:
当用户输入时: