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.0flutter 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
相关产品推荐
相关产品推荐

