如何解决flutter中如何使用函数的返回来填充一个DropDownMenu?
我有这个方法返回一个列表,其中包含来自 api 的项目,我想用它来填充下拉菜单项
data.map((item) {
return DropdownMenuItem(
child: Text(
item['animals_id']),value: item['animals_id'],);
}).toList(),
我用来从 api 填充该列表的有问题的方法是
getIaDetailsByAnimalID() async {
var response = await http.get(
Uri.parse(URL +
'/apI/Optifarm.ia_detail/?query={animals_id,name,order_animal,date_animal,date_identification_animal,sexe_animal,choix,sur_chaleur,prix,product_id}'),headers: {'Cookie': 'session_id=${v.session}'});
List<IaDetails> data = [];
var mJson = json.decode(response.body)['result'];
if (response.statusCode == 200) {
for (var item in mJson) {
data.add(IaDetails.fromJson(item));
}
return data;
}
}
我想在这个“List data = [];”中使用相同的数据填充下拉菜单项
我对 dart/Flutter 开发还是个新手,所以我感谢您提供的任何帮助
解决方法
您的下拉列表是否基于有状态小部件?如果是,将数据存储为状态的属性,然后在 setState 回调中更新它。
这些方法应该对您有用:
class DropDownMenu extends StatefulWidget {
const DropDownMenu({Key? key}) : super(key: key);
@override
_DropDownMenuState createState() => _DropDownMenuState();
}
class _DropDownMenuState extends State<DropDownMenu> {
List<IaDetails> data = [];
@override
Widget build(BuildContext context) {
return Column(
children: data.map((item) {
return DropdownMenuItem(
child: Text(item['animals_id']),value: item['animals_id'],);
}).toList(),);
}
void getIaDetailsByAnimalID() async {
var response = await http.get(
Uri.parse(URL +
'/api/optifarm.ia_detail/?query={animals_id,name,order_animal,date_animal,date_identification_animal,sexe_animal,choix,sur_chaleur,prix,product_id}'),headers: {'Cookie': 'session_id=${v.session}'});
List<IaDetails> newData = [];
var mJson = json.decode(response.body)['result'];
if (response.statusCode == 200) {
for (var item in mJson) {
newData.add(IaDetails.fromJson(item));
}
// Updating this.data within setState will rebuild the
// widget tree based on the new data.
setState(() {
data = newData;
});
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。