如何在 flutter 中基于下拉列表添加文本字段值
how to add a textfield value based on dropdown list in flutter
我还是 Flutter.In 的新手,我想 select 从下拉列表到类别表单的值 field.But 我在尝试定义
child: DropdownButtonHideUnderline
inside Textformfield.I 尝试找到解决方案,但我找不到,而且我无法自己编程。我希望你能帮助 me.Is 还有其他方法可以存档吗?
我的代码在这里,在此先感谢您的指导。
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final AuthService _auth = AuthService();
final _formKey = GlobalKey<FormState>();
String error = '';
bool loading = false;
String name = '';
String nickname = '';
String city = '';
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
backgroundColor: Colors.brown[50],
appBar: AppBar(
title: Text('Brew Crew'),
backgroundColor: Colors.brown[400],
elevation: 0.0,
actions: <Widget>[
FlatButton.icon(
icon: Icon(Icons.person),
label: Text('logout'),
onPressed: () async {
await _auth.signOut();
},
),
],
),
body: Container(
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 50.0),
child: Form(
key: _formKey,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'Name'),
validator: (val) => val.isEmpty ? 'Enter your name' : null,
onChanged: (val) {
setState(() => name = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'NickName'),
onChanged: (val) {
setState(() => nickname = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'City'),
validator: (val) => val.isEmpty ? 'Enter your city' : null,
onChanged: (val) {
setState(() => city = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'Category'),
validator: (val) => val.isEmpty ? 'Please select a category' : null,
onChanged: (val) {
setState(() => nickname = val);
},
),
SizedBox(height: 20.0),
RaisedButton(
color: Colors.pink[400],
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
onPressed: () async {
}
),
SizedBox(height: 12.0),
Text(
error,
style: TextStyle(color: Colors.red, fontSize: 14.0),
)
],
),
),
),
),
),
);
}
}
这里的问题是您不需要 TextFormField
,您需要 DropdownButton 小部件。
DropdownButton(
items: <DropdownMenuItem>[
DropdownMenuItem(
child: Text("Category I"),
),
DropdownMenuItem(
child: Text("Category II"),
),
],
onChanged: (value) {
},
),
我为此创建了一个代码笔:
https://codepen.io/md-weber/pen/zYvqaGv
我还是 Flutter.In 的新手,我想 select 从下拉列表到类别表单的值 field.But 我在尝试定义
child: DropdownButtonHideUnderline
inside Textformfield.I 尝试找到解决方案,但我找不到,而且我无法自己编程。我希望你能帮助 me.Is 还有其他方法可以存档吗?
我的代码在这里,在此先感谢您的指导。
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final AuthService _auth = AuthService();
final _formKey = GlobalKey<FormState>();
String error = '';
bool loading = false;
String name = '';
String nickname = '';
String city = '';
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
backgroundColor: Colors.brown[50],
appBar: AppBar(
title: Text('Brew Crew'),
backgroundColor: Colors.brown[400],
elevation: 0.0,
actions: <Widget>[
FlatButton.icon(
icon: Icon(Icons.person),
label: Text('logout'),
onPressed: () async {
await _auth.signOut();
},
),
],
),
body: Container(
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 50.0),
child: Form(
key: _formKey,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'Name'),
validator: (val) => val.isEmpty ? 'Enter your name' : null,
onChanged: (val) {
setState(() => name = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'NickName'),
onChanged: (val) {
setState(() => nickname = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'City'),
validator: (val) => val.isEmpty ? 'Enter your city' : null,
onChanged: (val) {
setState(() => city = val);
},
),
SizedBox(height: 20.0),
TextFormField(
decoration: textInputDecoration.copyWith(hintText: 'Category'),
validator: (val) => val.isEmpty ? 'Please select a category' : null,
onChanged: (val) {
setState(() => nickname = val);
},
),
SizedBox(height: 20.0),
RaisedButton(
color: Colors.pink[400],
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
onPressed: () async {
}
),
SizedBox(height: 12.0),
Text(
error,
style: TextStyle(color: Colors.red, fontSize: 14.0),
)
],
),
),
),
),
),
);
}
}
这里的问题是您不需要 TextFormField
,您需要 DropdownButton 小部件。
DropdownButton(
items: <DropdownMenuItem>[
DropdownMenuItem(
child: Text("Category I"),
),
DropdownMenuItem(
child: Text("Category II"),
),
],
onChanged: (value) {
},
),
我为此创建了一个代码笔: https://codepen.io/md-weber/pen/zYvqaGv