我是刚开始发展的。
我想从一个.json文件(大学列表)中检索数据,并允许用户键入第一个字母,这样他们就可以在颤振下拉选项中找到他们的大学。
我想从.json文件中检索的数据是'nom_court‘。
我的初始代码是一个textfield,它运行得很好:
TextFormField buildUniFormField() {
return TextFormField(
keyboardType: TextInputType.uni,
onSaved: (newValue) => uni = newValue,
onChanged: (value) {
if (value.isNotEmpty) {
removeError(error: kEmailNullError);
} else if (emailValidatorRegExp.hasMatch(value)) {
removeError(error: kInvalidEmailError);
}
return null;
},
validator: (value) {
if (value.isEmpty) {
addError(error: kEmailNullError);
return "";
} else if (!emailValidatorRegExp.hasMatch(value)) {
addError(error: kInvalidEmailError);
return "";
}
return null;
},
decoration: InputDecoration(
labelText: "University",
hintText: "Enter your university name",
floatingLabelBehavior: FloatingLabelBehavior.always,
suffixIcon: CustomSurffixIcon(svgIcon: "assets/icons/uni.svg"),我现在尝试使用一个下拉列表,使用.json文件,并将其直接放在小部件代码中:
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: [
buildEmailFormField(),
SizedBox(height: getProportionateScreenHeight(30)),
buildUniFormField(),
DropdownButton<String>(
items:list.map((Map val){
return DropdownMenuItem<String>(
value: val["Uniname"],
child: new Text(val["nom_court"]),
);).toList(),},它不起作用,我在‘下拉按钮’上出现了一个错误,上面写着‘--这个参数没有被定义为’
谢谢:)
发布于 2021-01-15 12:26:31
使用autocomplete_textfield:^1.6.4包比下拉小部件https://medium.com/flutter-community/implementing-auto-complete-search-list-a8dd192bd5f6更好的选项
发布于 2021-01-15 13:02:44
所以,就像您的错误消息说的那样,您还没有向您的onChanged提供DropdownButton参数。
您应该为当前下拉值创建一个状态,并在setState中为当前下拉值创建onChanged回调(),并在onChanged回调中为其创建setState:
class MyWidgetState extends State<MyWidget> {
String dropdownValue = // here specify the initial value for DropdownButton
Widget build(...) {
//...
DropdownButton(
value: dropdownValue,
onChanged: (value) => setState(() => dropdownValue = value),
items: list.map(...),
),
}
}我想您已经在使用StatefulWidget了,如果没有,请阅读文档
https://stackoverflow.com/questions/65734052
复制相似问题