首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自.json的颤振下拉列表

来自.json的颤振下拉列表
EN

Stack Overflow用户
提问于 2021-01-15 10:04:00
回答 2查看 294关注 0票数 0

我是刚开始发展的。

我想从一个.json文件(大学列表)中检索数据,并允许用户键入第一个字母,这样他们就可以在颤振下拉选项中找到他们的大学。

我想从.json文件中检索的数据是'nom_court‘。

我的初始代码是一个textfield,它运行得很好:

代码语言:javascript
复制
  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文件,并将其直接放在小部件代码中:

代码语言:javascript
复制
         @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(),},

它不起作用,我在‘下拉按钮’上出现了一个错误,上面写着‘--这个参数没有被定义为

谢谢:)

EN

回答 2

Stack Overflow用户

发布于 2021-01-15 12:26:31

使用autocomplete_textfield:^1.6.4包比下拉小部件https://medium.com/flutter-community/implementing-auto-complete-search-list-a8dd192bd5f6更好的选项

票数 0
EN

Stack Overflow用户

发布于 2021-01-15 13:02:44

所以,就像您的错误消息说的那样,您还没有向您的onChanged提供DropdownButton参数。

您应该为当前下拉值创建一个状态,并在setState中为当前下拉值创建onChanged回调(),并在onChanged回调中为其创建setState

代码语言:javascript
复制
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了,如果没有,请阅读文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65734052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档