我想根据 API 中的 id 调用一个值显示在下拉小部件中,但是 API 中的值没有出现在下拉小部件中。
我在用户选择一个值并将其包含在列表中时对其进行初始化 这是一个下拉小部件,用于显示来自 API 的值
String? selectedProvinsi;
List<WilayahModel> provinsi = [];
Future<void> _fetchDropdownValues() async {
String url = Constant.baseURL;
final response =
await http.get(Uri.parse('$url/auth/mhs_siakad/biodata/get_wilayah'));
if (response.statusCode == 200) {
setState(() {
provinsi = jsonDecode(response.body);
});
} else {
throw Exception('Failed to fetch dropdown values');
}
}
Future<void> _fetchDropdownValueById(int id) async {
String url = Constant.baseURL;
final response = await http.get(Uri.parse(
'$url/auth/mhs_siakad/biodata/get_wilayah?id=$id',
));
if (response.statusCode == 200) {
final parsedResponse = jsonDecode(response.body);
setState(() {
selectedProvinsi = parsedResponse['id_induk_wilayah'];
});
} else {
throw Exception('Failed to fetch dropdown value by id');
}
}
@override
void initState() {
super.initState();
_fetchDropdownValues();
}
......
DropdownButtonHideUnderline(
child: DropdownButton(
hint: const Text('Provinsi'),
value: selectedProvinsi,
onChanged: (dynamic value) {
setState(() {
selectedProvinsi = value;
_fetchDropdownValueById(value);
});
},
items: provinsi.map<DropdownMenuItem<dynamic>>((item) {
return DropdownMenuItem<dynamic>(
value: item,
child: Text(item.toString()),
);
}).toList(),
),
),