You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中基于选定参数调用数据API的问题求助

问题分析

你当前的代码虽然接收了smt参数,但并未将其传递给目标API——这就是调用失败的核心原因。从你提供的API参数标记图能看出,该接口需要smt作为查询参数。

修复后的代码
static Future<Map<String, DataKuliahModel>> getDataKuliah(int smt) async {
  String url = Constant.baseURL;
  String token = await UtilSharedPreferences.getToken();
  await Future.delayed(const Duration(milliseconds: 1000));

  Map<String, DataKuliahModel> finalResult = {};
  final response = await http.get(
    // 将smt作为查询参数拼接到URL中
    Uri.parse('$url/auth/mhs_siakad/perwalian/get_paket?smt=$smt'),
    headers: {
      'Authorization': 'Bearer $token',
    },
  );
  print(response.statusCode);
  print(response.body);
  
  // 增加错误处理,避免解析失败导致崩溃
  if (response.statusCode == 200) {
    final result = jsonDecode(response.body)['data'] as Map<String, dynamic>;
    result.forEach((key, value) {
      finalResult[key] = DataKuliahModel.fromMap(value);
    });
    return finalResult;
  } else {
    // 根据实际业务需求处理错误,这里以抛出异常为例
    throw Exception('请求失败,状态码:${response.statusCode}');
  }
}
关键修改说明
  • 传递必要参数:在请求URL末尾拼接?smt=$smt,把传入的学期参数传递给API,满足接口的参数要求
  • 增加错误防护:添加状态码判断,避免API返回非成功状态时强行解析JSON导致应用崩溃
  • 简化代码逻辑:直接通过finalResult[key] = dataKuliah完成数据映射,替代冗余的addAll调用

内容的提问来源于stack exchange,提问作者sharon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:10:19