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

Flutter应用Debug模式下HTTP GET请求正常,Release打包后无法请求问题求助

Flutter应用Debug模式下HTTP GET请求正常,Release打包后无法请求问题求助

各位Flutter和Android开发的朋友们好!

我最近开发了一个应用,功能是发起HTTP请求下载一个.json文件,解析后生成对应的选项列表。在Flutter热重载调试时,不管是在Android 11还是Android 12的真机上,HTTP GET请求都能完美执行,列表也能正常生成,一切都没问题。

但是!当我用命令flutter build apk --release生成正式安装包,再安装到之前调试过的同一台设备上时,App直接卡在加载界面,完全无法正常工作。

我已经尝试了几个解决方案,但都没效果:

  • 检查并配置了AndroidManifest.xml中的网络权限
  • 更换HTTP请求包:原本用的是http库,后来换成了dio库,问题依然存在

下面是请求相关的核心代码:

请求方法getSongs

void getSongs() async {
  try {
    final dio = Dio();
    final response = await dio
        .get('https://joacoo.pythonanywhere.com/static/json/songs.json');
    if (response.statusCode == 200) {
      List<dynamic> jsonResponse = response.data;
      for (int i = 0; i < jsonResponse.length; i++) {
        Song newSong = Song.fromjson(json: jsonResponse[i], id: i);
        songs.add(newSong);
      }
      for (int i = 0; i < songs.length; i++) {
        String id = songs[i].id.toString();
        String name = songs[i].name;
        songsIDName.add('$id $name');
      }
      songsLoaded = true;
      notifyListeners();
    } else {
      throw Exception('Failed to load songs');
    }
  } catch (e) {
    songsLoaded = true;
  }
}

Song类的fromjson工厂方法

factory Song.fromjson({required dynamic json, required int id}) {
  String nameFromJson = removeASCIIChars(str: json['name'].toString());
  String categoryFromJson =
      removeASCIIChars(str: json['category'].toString());
  return Song(
    name: nameFromJson,
    category: categoryFromJson,
    bpm: json['bpm'],
    tab: json['tab'],
    id: id,
  );
}

另外还有个removeASCIIChars方法,用来处理西班牙语歌曲标题里的ñ字符,不过这个方法在Debug模式下也完全正常工作。

再强调一遍:所有逻辑在Debug模式下都没有问题,一打包成Release就失效了,有没有大佬知道这是哪里出问题了?

备注:内容来源于stack exchange,提问作者J04c0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:58:03