我有两个页面,我想在第二个屏幕中使用“id”变量从API获取数据。
我该怎么办?
屏幕1:这是一个包含卡列表的屏幕,每张卡上都有一个进入详细信息页面的按钮(第二个屏幕)
屏幕二:我按id显示这个用户的数据
注意:当我发送它时,我总是得到一个500内部服务器错误,因为ID没有发送,但是如果我直接在Future中的代码中写入ID,数据就会出现。
屏幕一
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailAbsensi(
id: " ${data[index].idKelasKuliah}",
),
),
);
},
style: TextButton.styleFrom(
backgroundColor: const Color(0xffC9F7F5),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
child: Text(
"Absensi",
style: bold5.copyWith(
color: const Color(
0xff1BC5BD,
),
),
),
),
屏幕二
const DetailAbsensi({
super.key,
this.id = '',
});
final String id;
500内部服务器错误
Widget headerDetail() {
return FutureBuilder<ModelAbsensi>(
future: AbsensiProvider().getAbsensi(id), // not work error 500 internal server error
builder: (context, snapshot) {
print('ini adalah $id');
if (snapshot.hasData) {
工作
Widget headerDetail() {
return FutureBuilder<ModelAbsensi>(
future:
AbsensiProvider().getAbsensi('e4d783cd-80a7-4419-9a81-e31e607afba8'), // work
builder: (context, snapshot) {
print('ini adalah $id');
提取ID
Future<ModelAbsensi> getAbsensi(String id) async {
String url = Constant.baseURL;
String token = await UtilSharedPreferences.getToken();
final response = await http.get(
Uri.parse(
'$url/auth/mhs_siakad/absensi_perkuliahan?id_kelas_kuliah=$id',
),
headers: {
'Authorization': 'Bearer $token',
},
);
print(response.statusCode);
print(response.body);
if (response.statusCode == 200) {
return ModelAbsensi.fromJson(jsonDecode(response.body));
} else {
throw Exception();
}
}
ID已发送,但当您希望基于ID获取API时,发生错误
2条答案
按热度按时间wtlkbnrh1#
请注意“和$之间的空格,尝试将其删除
rt4zxlrg2#
你有一个额外的空间之前,你正在传递的id ...尝试一次删除。