flutter - 来自json Api的flutter中的下拉菜单
问题描述
我有一个 Api,我想在 Flutter 应用程序的下拉菜单中显示它。
我能够在简单的文本小部件中获取列表,但无法在 DropDownButton 中获取。
这是我的代码示例
_getAllCategories() async {
var categories = await _categoryService.getCategories();
var _list = json.decode(categories.body);
List<Category> results = [];
_list['data'].forEach((data) {
var model = Category();
model.id = data["id"];
model.name = data["categoryName"];
model.icon = data["categoryIcon"];
results.add(model);
});
if (mounted) {
setState(() {
_categoryList = results;
});
}
}
我正在使用
ListView.builder(
itemCount: _categoryList.length,
itemBuilder: (context, index){
return Text(_categoryList[index].name,style: TextStyle(fontSize: 25),);
},
),
解决方案
您可以尝试一个简单的下拉小部件,如下所示:
List<Category> _categoryList = List<Category>();
Category dropdownValue;
@override
Widget build(BuildContext context) {
return DropdownButton<Category>(
value: dropdownValue,
icon: Icon(Icons.arrow_downward),
iconSize: 24,
elevation: 16,
style: TextStyle(color: Colors.deepPurple),
underline: Container(
height: 2,
color: Colors.deepPurpleAccent,
),
onChanged: (Category newValue) {
setState(() {
dropdownValue = newValue;
});
},
items: _categoryList.map<DropdownMenuItem<Category>>((Category value) {
return DropdownMenuItem<Category>(
value: value,
child: Text(value.name),
);
}).toList(),
);
}
}
class Category {
String name;
String icon;
int id;
}
推荐阅读
- c# - 以百分比/概率在 Unity 中生成随机游戏对象
- python - Selenium Python 生成的包含 cookiebanner.js 信息的块输出
- c# - Assets\BlinkScript.cs(9,12):错误 CS0246:找不到类型或命名空间名称“文本”
- database - 如何使用 Postgres 触发器对一张表中的两列进行双重写入?
- amazon-dynamodb - 如何在这个 dynamodb 表中搜索唯一用户?
- selenium - io.cucumber.junit.UndefinedStepException:步骤“用户在登录页面”未定义。您可以使用下面的代码片段来实现它:
- javascript - 对象为空时如何设置警报消息
- vue.js - 如何在组件内定义一个 Vue 转换生命周期钩子以结束路由器转换?
- ios - 如何检查日期是否至少是前一天?
- three.js - 未捕获的类型错误:无法读取 Three.js 中未定义的属性“地图”