我试图显示数据列表API下拉菜单,但结果不存在,我必须修复。我试图更改或更新用户数据,并在列表中包括用户可以选择国家,宗教等形式的一些数据。其中我如何使它。
获取API
Future<UserBiodata> getBiodata() async {
String url = Constant.baseURL;
String token = await UtilSharedPreferences.getToken();
final response = await http.get(
Uri.parse(
'$url/auth/mhs_siakad/biodata',
),
headers: {
'Authorization': 'Bearer $token',
},
);
print(response.statusCode);
print(response.body);
if (response.statusCode == 200) {
return UserBiodata.fromJson(jsonDecode(response.body));
} else {
throw Exception('Token Expired!');
}
}
在窗口小部件中显示
String? _mySelection;
List<Agama> agama = [];
@override
void initState() {
super.initState();
BiodataProvider().getBiodata();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: const Size.fromHeight(kToolbarHeight),
child: CustomAppbar(
title: 'Edit Biodata',
),
),
body: Padding(
padding: const EdgeInsets.all(18),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: const EdgeInsets.only(left: 12, right: 8),
width: double.infinity,
height: 50,
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.2),
spreadRadius: 1,
blurRadius: 9,
offset: const Offset(
1,
2,
),
),
],
),
child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
items: agama.map((item) {
return DropdownMenuItem<String>(
value: item.nmAgama,
child: Text(item.nmAgama),
);
}).toList(),
onChanged: (newVal) {
setState(() {
_mySelection = newVal!;
});
},
value: _mySelection,
),
),
),
3条答案
按热度按时间gmol16391#
使用状态管理或FutureBuilder从Future函数(生物数据提供者(). getBiodata())接收异步数据;)阅读更多信息:https://dart.dev/codelabs/async-awaithttps://docs.flutter.dev/development/data-and-backend
nlejzf6q2#
你正在使用
List<Agama> agama = [];
来显示下拉菜单项,但是你没有添加数据到你的agama
列表.因此,添加适当的数据到您的
agama
列表,您从API获得.并且不要忘记在将数据添加到
agama
列表之后执行setState((){})
,因为您没有使用任何状态管理。kkbh8khc3#
这里有一个你想要的完整例子。