Flutter 如何在Flatter中为TextFormField添加以下装饰?

Flutter 如何在Flatter中为TextFormField添加以下装饰?,flutter,flutter-layout,Flutter,Flutter Layout,以下是我的代码,我试图添加表单TextFormField和装饰,如模拟中所示: 圆边 背景颜色为灰色 首先是电子邮件,然后是文本不可见的密码 其中密码字段将具有显示按钮,以使密码可见 最后是一个圆形的提交按钮 模拟: 代码: 类MyCustomFormState扩展了状态{ final _formKey=GlobalKey(); @凌驾 小部件构建(构建上下文){ //使用上面创建的_formKey构建表单小部件。 报税表( 键:_formKey, 子:列( crossAxisAlignm

以下是我的代码,我试图添加表单TextFormField和装饰,如模拟中所示:

  • 圆边
  • 背景颜色为灰色
  • 首先是电子邮件,然后是文本不可见的密码
  • 其中密码字段将具有显示按钮,以使密码可见
  • 最后是一个圆形的提交按钮
模拟:

代码:

类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)),
                    ),
                  )),
            ],
          ),
        ));
  }