如何根据其他下拉选择将本地 Json 加载到 Flutter DropDown?

Posted

技术标签:

【中文标题】如何根据其他下拉选择将本地 Json 加载到 Flutter DropDown?【英文标题】:How to load local Json to Flutter DropDown based on other dropdown selection? 【发布时间】:2019-05-21 02:18:41 【问题描述】:

我有一个本地 json 文件,根据公司名称和/或分支名称,我需要将它们加载到 Flutter 的 2 个不同的下拉列表中。

1) 公司下拉列表: 它将包含/显示带有 CompanyCode 的 CompanyName 列表,例如;

示例:公司 A(01)

2) 分支下拉菜单: 它将根据选定的公司名称包含/显示带有 BranchCode 的 BranchName 列表,例如;

示例:第一个分支 (0001)

我的问题是我可以加载本地 Json 文件并添加到 Map 但如何添加到 List 以便我可以在 Flutter 中加载下拉菜单?

  
   "branch":[  
        
         "companyCode”:”01”,
         "companyName”:”Comapmy A”,
         "branchCode”:”0001”,
         "branchName”:”First Branch“
      ,
        
         "companyCode”:”01",
         "companyName”:”Company A”,
         "branchCode”:”0002”,
         "branchName”:”Second Branch”
      ,
        
         "companyCode”:”02”,
         "companyName”:”Company B”,
         "branchCode”:”0001”,
         "branchName”:”First Branch”
      
   ]



String jsonCompany = await rootBundle.loadString("packages/capi/company.json");
Map _mapCompnay = jsonDecode(jsonCompany);

【问题讨论】:

【参考方案1】:

这里有 json 对象:

Map _mapCompany = jsonDecode(jsonCompany);

接下来,从branch对象中获取数组:

List list = _mapCompany["branch"]; 

就是这样,现在您可以使用您的列表来填写您的下拉列表:

        DropdownButton<String>(
                      items:list.map((Map val)
                        return DropdownMenuItem<String>(
                          value: val["companyCode"],
                          child: new Text(val["companyName"]),
                        );
                      ).toList(),
                      ...

【讨论】:

谢谢,但是如何根据所选公司名称加载第二个分支名称的下拉列表 更改第一个下拉菜单后,获取值并使用 setState 刷新小部件。 我不知道怎么做。如果我选择 Comappy A 我需要加载第二个下拉列表,第一个分支(001),第二个分支(0002),是否可以更新您的答案? 对不起,问题是:'How to load local Json to Flutter DropDown',我想我的回答涵盖了这个问题。你应该阅读更多关于 Flutter 中的 Widgets 的内容。 谢谢,我改变了我的问题。其次,你的代码不是我想要的。我加载 Company 1 两次...

以上是关于如何根据其他下拉选择将本地 Json 加载到 Flutter DropDown?的主要内容,如果未能解决你的问题,请参考以下文章

根据角度 5 中的条件填充城市下拉列表

如何将 json 文件加载到本地存储中?

如何将模型数据加载到在 Yii 中使用 Ajax 过滤的 Select2 下拉列表

如何从本地 JSON 文件将数据加载到 ViewController [关闭]

使用 Razor Pages,在用户从下拉列表中选择父级后,如何将相关数据加载到 div?

微信小程序下拉框搜索模糊(无数据库操作,json存入js文件,小程序引入并存本地缓存)