Flutter 如何在Flatter中为TextFormField添加以下装饰?
以下是我的代码,我试图添加表单TextFormField和装饰,如模拟中所示:Flutter 如何在Flatter中为TextFormField添加以下装饰?,flutter,flutter-layout,Flutter,Flutter Layout,以下是我的代码,我试图添加表单TextFormField和装饰,如模拟中所示: 圆边 背景颜色为灰色 首先是电子邮件,然后是文本不可见的密码 其中密码字段将具有显示按钮,以使密码可见 最后是一个圆形的提交按钮 模拟: 代码: 类MyCustomFormState扩展了状态{ final _formKey=GlobalKey(); @凌驾 小部件构建(构建上下文){ //使用上面创建的_formKey构建表单小部件。 报税表( 键:_formKey, 子:列( crossAxisAlignm
- 圆边
- 背景颜色为灰色
- 首先是电子邮件,然后是文本不可见的密码
- 其中密码字段将具有显示按钮,以使密码可见
- 最后是一个圆形的提交按钮
类MyCustomFormState扩展了状态{
final _formKey=GlobalKey();
@凌驾
小部件构建(构建上下文){
//使用上面创建的_formKey构建表单小部件。
报税表(
键:_formKey,
子:列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
TextFormField(
装饰:输入装饰(
填充颜色:颜色。灰色,
焦点颜色:颜色。灰色
),
验证器:(值){
if(value.isEmpty){
返回“您的电子邮件”;
}
返回null;
},
),
TextFormField(
装饰:输入装饰(
填充颜色:颜色。灰色,
焦点颜色:颜色。灰色
),
验证器:(值){
if(value.isEmpty){
返回“您的密码”;
}
返回null;
},
),
填充物(
填充:常量边集。对称(垂直:16.0),
孩子:升起按钮(
已按下:(){
//如果表单有效,则Validate返回true,否则返回false
//否则。
if(_formKey.currentState.validate()){
//如果表单有效,则显示一个快捷键。
脚手架(上下文)
.showSnackBar(SnackBar(内容:文本(“处理数据”));
}
},
子项:文本('Submit'),
),
),
],
),
);
}
}
编辑:
如何更改此标签的颜色
您可以在
大纲输入边框
中使用边框半径
,使其可舍入
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Scaffold(
appBar: AppBar(
title: Text('Testing'),
),
body: Form(
child: Column(
key: _formKey,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.all(10),
child: Container(
decoration: BoxDecoration(
color: Colors.grey,
borderRadius: new BorderRadius.circular(10.0),
),
child: Padding(
padding: EdgeInsets.only(left: 15, right: 15, top: 5),
child: TextFormField(
decoration: InputDecoration(
border: InputBorder.none,
labelText: 'Email',
))))),
Padding(
padding: EdgeInsets.all(10),
child: Stack(
alignment: const Alignment(0, 0),
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Colors.grey,
borderRadius: new BorderRadius.circular(10.0),
),
child: Padding(
padding:
EdgeInsets.only(left: 15, right: 15, top: 5),
child: TextFormField(
obscureText: true,
decoration: InputDecoration(
border: InputBorder.none,
labelText: 'Your password',
)))),
Positioned(
right: 15,
child: RaisedButton(
onPressed: () {
// _controller.clear();
},
child: Text('SHOW')))
],
),
),
Padding(
padding: const EdgeInsets.all(10),
child: Container(
height: 50,
width: double.infinity,
child: RaisedButton(
color: Colors.green,
onPressed: () {
// Validate returns true if the form is valid, or false
// otherwise.
if (_formKey.currentState.validate()) {
// If the form is valid, display a Snackbar.
Scaffold.of(context).showSnackBar(
SnackBar(content: Text('Processing Data')));
}
},
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.green)),
),
)),
],
),
));
}
@覆盖
小部件构建(构建上下文){
//使用上面创建的_formKey构建表单小部件。
返回脚手架(
appBar:appBar(
标题:文本(“测试”),
),
正文:表格(
子:列(
键:_formKey,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
填充物(
填充:边缘设置。全部(10),
子:容器(
装饰:盒子装饰(
颜色:颜色。灰色,
边界半径:新边界半径。圆形(10.0),
),
孩子:填充(
填充:仅限边设置(左:15,右:15,顶部:5),
子项:TextFormField(
装饰:输入装饰(
边框:InputBorder.none,
labelText:“电子邮件”,
))))),
填充物(
填充:边缘设置。全部(10),
子:堆栈(
对齐:常量对齐(0,0),
儿童:[
容器(
装饰:盒子装饰(
颜色:颜色。灰色,
边界半径:新边界半径。圆形(10.0),
),
孩子:填充(
衬垫:
仅限边集(左:15,右:15,顶部:5),
子项:TextFormField(
蒙昧文字:对,
装饰:输入装饰(
边框:InputBorder.none,
labelText:“您的密码”,
)))),
定位(
右:15,
孩子:升起按钮(
已按下:(){
//_controller.clear();
},
子项:文本('SHOW'))
],
),
),
填充物(
填充:常量边集。全部(10),
子:容器(
身高:50,
宽度:double.infinity,
孩子:升起按钮(
颜色:颜色。绿色,
已按下:(){
//如果表单有效,则Validate返回true,否则返回false
//否则。
if(_formKey.currentState.validate()){
//如果表单有效,则显示一个快捷键。
Scaffold.of(上下文).showSnackBar(
SnackBar(内容:文本(“处理数据”));
}
},
子:文本(
“提交”,
样式:TextStyle(颜色:Colors.white),
),
形状:圆形矩形边框(
边界半径:新边界半径。圆形(18.0),
边:边框边(颜色:Colors.green)),
),
)),
],
),
));
}
输出
编辑
单击边框时,可以更改边框颜色
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Scaffold(
appBar: AppBar(
title: Text('Testing'),
),
body: Form(
child: Column(
key: _formKey,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.all(10),
child: TextField(
autofocus: false,
style: TextStyle(fontSize: 15.0, color: Colors.black),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Username',
filled: true,
fillColor: Colors.grey,
contentPadding: const EdgeInsets.only(
left: 14.0, bottom: 6.0, top: 8.0),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red),
borderRadius: BorderRadius.circular(10.0),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.circular(10.0),
),
),
),
),
Padding(
padding: EdgeInsets.all(10),
child: Stack(
alignment: const Alignment(0, 0),
children: <Widget>[
TextField(
obscureText: true,
autofocus: false,
style: TextStyle(fontSize: 15.0, color: Colors.black),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'password',
filled: true,
fillColor: Colors.grey,
contentPadding: const EdgeInsets.only(
left: 14.0, bottom: 6.0, top: 8.0),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red),
borderRadius: BorderRadius.circular(10.0),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Positioned(
right: 15,
child: Container(
width: 65,
height: 30,
child: RaisedButton(
onPressed: () {
// _controller.clear();
},
child: Text(
'SHOW',
style: TextStyle(fontSize: 8),
))))
],
),
),
Padding(
padding: const EdgeInsets.all(10),
child: Container(
height: 50,
width: double.infinity,
child: RaisedButton(
color: Colors.green,
onPressed: () {
// Validate returns true if the form is valid, or false
// otherwise.
if (_formKey.currentState.validate()) {
// If the form is valid, display a Snackbar.
Scaffold.of(context).showSnackBar(
SnackBar(content: Text('Processing Data')));
}
},
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.green)),
),
)),
],
),
));
}
@覆盖
小部件构建(构建上下文){
//使用上面创建的_formKey构建表单小部件。
返回脚手架(
appBar:appBar(
标题:文本(“测试”),
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Scaffold(
appBar: AppBar(
title: Text('Testing'),
),
body: Form(
child: Column(
key: _formKey,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.all(10),
child: TextField(
autofocus: false,
style: TextStyle(fontSize: 15.0, color: Colors.black),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Username',
filled: true,
fillColor: Colors.grey,
contentPadding: const EdgeInsets.only(
left: 14.0, bottom: 6.0, top: 8.0),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red),
borderRadius: BorderRadius.circular(10.0),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.circular(10.0),
),
),
),
),
Padding(
padding: EdgeInsets.all(10),
child: Stack(
alignment: const Alignment(0, 0),
children: <Widget>[
TextField(
obscureText: true,
autofocus: false,
style: TextStyle(fontSize: 15.0, color: Colors.black),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'password',
filled: true,
fillColor: Colors.grey,
contentPadding: const EdgeInsets.only(
left: 14.0, bottom: 6.0, top: 8.0),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red),
borderRadius: BorderRadius.circular(10.0),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.circular(10.0),
),
),
),
Positioned(
right: 15,
child: Container(
width: 65,
height: 30,
child: RaisedButton(
onPressed: () {
// _controller.clear();
},
child: Text(
'SHOW',
style: TextStyle(fontSize: 8),
))))
],
),
),
Padding(
padding: const EdgeInsets.all(10),
child: Container(
height: 50,
width: double.infinity,
child: RaisedButton(
color: Colors.green,
onPressed: () {
// Validate returns true if the form is valid, or false
// otherwise.
if (_formKey.currentState.validate()) {
// If the form is valid, display a Snackbar.
Scaffold.of(context).showSnackBar(
SnackBar(content: Text('Processing Data')));
}
},
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.green)),
),
)),
],
),
));
}