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

Flutter中http.get无响应求助:官方示例代码无法获取数据

解决http.get无返回、页面持续加载的问题

1. 检查平台网络权限

  • Android: 在android/app/src/main/AndroidManifest.xml中,确保在<application>标签外添加网络权限:
    <uses-permission android:name="android.permission.INTERNET"/>
    
  • iOS: 在ios/Runner/Info.plist中添加ATS配置(若请求非HTTPS接口,或HTTPS证书存在兼容性问题):
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

2. 验证请求URL的可达性

  • 直接在浏览器中访问官方示例的测试URL https://jsonplaceholder.typicode.com/photos,确认能正常返回JSON数据。
  • 若使用本地接口:Android模拟器需用10.0.2.2替代localhost,iOS模拟器可直接用localhost;同时检查本地服务是否启动、防火墙是否拦截请求。

3. 排查代理与网络环境

  • 关闭全局代理(VPN、梯子等)后重试请求,部分代理会拦截Flutter的网络请求。
  • 若必须使用代理,可在代码中为http客户端配置代理:
    final client = HttpClient();
    client.findProxy = (uri) => "PROXY 你的代理地址:端口";
    

4. 检查http包兼容性与版本

  • 尝试升级http包到最新稳定版,修改pubspec.yaml:
    http: ^1.1.0
    
    执行flutter pub get更新依赖后重试。

5. 添加错误捕获定位问题

  • 修改官方示例的fetchAlbum方法,添加异常捕获并打印日志:
    Future<Album> fetchAlbum() async {
      try {
        final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/albums/1'));
        if (response.statusCode == 200) {
          return Album.fromJson(jsonDecode(response.body));
        } else {
          throw Exception('请求失败: ${response.statusCode}');
        }
      } catch (e) {
        print('请求异常详情: $e');
        rethrow;
      }
    }
    
    查看flutter run终端的输出日志,即可明确是连接超时、DNS解析失败还是其他具体问题。

6. 重置Flutter环境

  • 执行flutter doctor检查环境配置是否正常,修复提示的异常项。
  • 重启IDE、模拟器/真机,清除项目缓存(执行flutter clean后重新flutter pub get)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:45:59