如何根据其他下拉选择将本地 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何将模型数据加载到在 Yii 中使用 Ajax 过滤的 Select2 下拉列表
如何从本地 JSON 文件将数据加载到 ViewController [关闭]