Android 如何获取颤振中的TextField值
嗨,我已经在颤振中创建了注册屏幕。我想在Android 如何获取颤振中的TextField值,android,ios,flutter,Android,Ios,Flutter,嗨,我已经在颤振中创建了注册屏幕。我想在FlatButton的on按钮中获取电子邮件和密码 有人知道在弗利特怎么做吗 Widget SignupPage() { return new Scaffold(body: Container( height: MediaQuery.of(context).size.height, decoration: BoxDecoration( color: Colors.white, image:
FlatButton
的on按钮中获取电子邮件和密码
有人知道在弗利特怎么做吗
Widget SignupPage() {
return new Scaffold(body: Container(
height: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
color: Colors.white,
image: DecorationImage(
colorFilter: new ColorFilter.mode(
Colors.black.withOpacity(0.05), BlendMode.dstATop),
image: AssetImage('assets/images/mountains.jpg'),
fit: BoxFit.cover,
),
),
child: new Column(
children: <Widget>[
Container(
padding: EdgeInsets.all(100.0),
child: Center(
child: Icon(
Icons.headset_mic,
color: Colors.redAccent,
size: 50.0,
),
),
),
new Row(
children: <Widget>[
new Expanded(
child: new Padding(
padding: const EdgeInsets.only(left: 40.0),
child: new Text(
"EMAIL",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.redAccent,
fontSize: 15.0,
),
),
),
),
],
),
new Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.only(left: 40.0, right: 40.0, top: 10.0),
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Colors.redAccent,
width: 0.5,
style: BorderStyle.solid),
),
),
padding: const EdgeInsets.only(left: 0.0, right: 10.0),
child: new Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
new Expanded(
child: TextField(
obscureText: true,
textAlign: TextAlign.left,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'PLEASE ENTER YOUR EMAIL',
hintStyle: TextStyle(color: Colors.grey),
),
),
),
],
),
),
Divider(
height: 24.0,
),
new Row(
children: <Widget>[
new Expanded(
child: new Padding(
padding: const EdgeInsets.only(left: 40.0),
child: new Text(
"PASSWORD",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.redAccent,
fontSize: 15.0,
),
),
),
),
],
),
new Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.only(left: 40.0, right: 40.0, top: 10.0),
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Colors.redAccent,
width: 0.5,
style: BorderStyle.solid),
),
),
padding: const EdgeInsets.only(left: 0.0, right: 10.0),
child: new Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
new Expanded(
child: TextField(
obscureText: true,
textAlign: TextAlign.left,
decoration: InputDecoration(
border: InputBorder.none,
hintText: '*********',
hintStyle: TextStyle(color: Colors.grey),
),
),
),
],
),
),
Divider(
height: 24.0,
),
new Row(
children: <Widget>[
new Expanded(
child: new Padding(
padding: const EdgeInsets.only(left: 40.0),
child: new Text(
"CONFIRM PASSWORD",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.redAccent,
fontSize: 15.0,
),
),
),
),
],
),
new Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.only(left: 40.0, right: 40.0, top: 10.0),
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Colors.redAccent,
width: 0.5,
style: BorderStyle.solid),
),
),
padding: const EdgeInsets.only(left: 0.0, right: 10.0),
child: new Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
new Expanded(
child: TextField(
obscureText: true,
textAlign: TextAlign.left,
decoration: InputDecoration(
border: InputBorder.none,
hintText: '*********',
hintStyle: TextStyle(color: Colors.grey),
),
),
),
],
),
),
Divider(
height: 24.0,
),
new Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 20.0),
child: new FlatButton(
child: new Text(
"Already have an account?",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.redAccent,
fontSize: 15.0,
),
textAlign: TextAlign.end,
),
onPressed: () => {},
),
),
],
),
new Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.only(left: 30.0, right: 30.0, top: 50.0),
alignment: Alignment.center,
child: new Row(
children: <Widget>[
new Expanded(
child: new FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(30.0),
),
color: Colors.redAccent,
onPressed: () => authHandler.handleSignInEmail(emailController.text, passwordController.text)
.then((FirebaseUser user) {
Navigator.push(context, new MaterialPageRoute(builder: (context) => HomePage()));
}).catchError((e) => print(e)),
child: new Container(
padding: const EdgeInsets.symmetric(
vertical: 20.0,
horizontal: 20.0,
),
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Expanded(
child: Text(
"SIGN UP",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
),
),
],
),
),
),
),
],
),
),
],
),
));
}
Widget SignupPage(){
返回新脚手架(主体:容器)(
高度:MediaQuery.of(context).size.height,
装饰:盒子装饰(
颜色:颜色,白色,
图像:装饰图像(
colorFilter:新的colorFilter.mode(
颜色。黑色。不透明度(0.05),混合模式。DSTOP),
图像:AssetImage('assets/images/mountains.jpg'),
适合:BoxFit.cover,
),
),
子:新列(
儿童:[
容器(
填充:所有边缘设置(100.0),
儿童:中心(
子:图标(
图标。耳机和麦克风,
颜色:Colors.redAccent,
尺寸:50.0,
),
),
),
新行(
儿童:[
新扩展(
孩子:新的填充物(
填充:仅限常量边集(左:40.0),
儿童:新文本(
“电子邮件”,
样式:TextStyle(
fontWeight:fontWeight.bold,
颜色:Colors.redAccent,
字体大小:15.0,
),
),
),
),
],
),
新容器(
宽度:MediaQuery.of(context).size.width,
边距:仅限常量边集(左:40.0,右:40.0,顶:10.0),
对齐:对齐.center,
装饰:盒子装饰(
边界:边界(
底部:边界侧(
颜色:Colors.redAccent,
宽度:0.5,
样式:边框样式。实心),
),
),
填充:仅限常量边集(左:0.0,右:10.0),
孩子:新的一排(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
新扩展(
孩子:TextField(
蒙昧文字:对,
textAlign:textAlign.left,
装饰:输入装饰(
边框:InputBorder.none,
hintText:'请输入您的电子邮件',
hintStyle:TextStyle(颜色:Colors.grey),
),
),
),
],
),
),
分隔器(
身高:24.0,
),
新行(
儿童:[
新扩展(
孩子:新的填充物(
填充:仅限常量边集(左:40.0),
儿童:新文本(
“密码”,
样式:TextStyle(
fontWeight:fontWeight.bold,
颜色:Colors.redAccent,
字体大小:15.0,
),
),
),
),
],
),
新容器(
宽度:MediaQuery.of(context).size.width,
边距:仅限常量边集(左:40.0,右:40.0,顶:10.0),
对齐:对齐.center,
装饰:盒子装饰(
边界:边界(
底部:边界侧(
颜色:Colors.redAccent,
宽度:0.5,
样式:边框样式。实心),
),
),
填充:仅限常量边集(左:0.0,右:10.0),
孩子:新的一排(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
新扩展(
孩子:TextField(
蒙昧文字:对,
textAlign:textAlign.left,
装饰:输入装饰(
边框:InputBorder.none,
hintText:“**********”,
hintStyle:TextStyle(颜色:Colors.grey),
),
),
),
],
),
),
分隔器(
身高:24.0,
),
新行(
儿童:[
新扩展(
孩子:新的填充物(
填充:仅限常量边集(左:40.0),
儿童:新文本(
“确认密码”,
样式:TextStyle(
fontWeight:fontWeight.bold,
颜色:Colors.redAccent,
字体大小:15.0,
),
),
),
),
],
),
新容器(
宽度:MediaQuery.of(context).size.width,
边距:仅限常量边集(左:40.0,右:40.0,顶:10.0),
对齐:对齐.center,
装饰:盒子装饰(
边界:边界(
底部:边界侧(
颜色:Colors.redAccent,
宽度:0.5,
样式:边框样式。实心),
),
),
填充:仅限常量边集(左:0.0,右:10.0),
孩子:新的一排(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
新扩展(
孩子:TextField(
蒙昧文字:对,
textAlign:textAlign.left,
装饰:输入装饰(
边框:InputBorder.none,
辛特克斯
TextEditingController emailController = new TextEditingController();
....
TextField(
controller: emailController,
obscureText: true,
textAlign: TextAlign.left,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'PLEASE ENTER YOUR EMAIL',
hintStyle: TextStyle(color: Colors.grey),
),
)
emailController.text
TextEditingController emailController = new TextEditingController();
....
TextField(
controller: emailController,
obscureText: true,
textAlign: TextAlign.left,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'PLEASE ENTER YOUR EMAIL',
hintStyle: TextStyle(color: Colors.grey),
),
)
emailController.text
TextEditingController yourControllerName = new TextEditingController();
TextField(
controller: yourNameController,
// your extra stuff
)
Text(
yourControllerName.text.toString(), // this will convert your controller to String
)