flutter如何实现网络通信

在Flutter中实现网络通信有哪些常用方法?比如使用http包、Dio库或者WebSocket,它们各自有什么优缺点?能否提供一个简单的代码示例演示如何发起GET/POST请求并处理返回数据?另外,网络请求时如何正确处理异步操作和错误异常?

2 回复

Flutter使用httpdio库实现网络通信。步骤如下:

  1. 添加依赖到pubspec.yaml
  2. 导入库并发送HTTP请求(GET/POST)。
  3. 处理响应数据(JSON解析等)。
  4. 使用FutureBuilderasync/await管理异步操作。

更多关于flutter如何实现网络通信的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter 中实现网络通信主要通过 httpdio 库。以下是基本步骤:

  1. 添加依赖
    pubspec.yaml 中添加:

    dependencies:
      http: ^1.1.0  # 或 dio: ^5.0.0
    
  2. 发起 HTTP 请求
    使用 http 库(官方基础库)

    import 'package:http/http.dart' as http;
    
    Future<void> fetchData() async {
      final response = await http.get(Uri.parse('https://api.example.com/data'));
      if (response.statusCode == 200) {
        print('响应数据:${response.body}');
      } else {
        print('请求失败:${response.statusCode}');
      }
    }
    

    使用 dio 库(功能更强大,推荐)

    import 'package:dio/dio.dart';
    
    Future<void> fetchData() async {
      final dio = Dio();
      try {
        final response = await dio.get('https://api.example.com/data');
        print('响应数据:${response.data}');
      } catch (e) {
        print('请求异常:$e');
      }
    }
    
  3. 处理响应数据
    通常返回 JSON 数据,使用 dart:convert 解析:

    import 'dart:convert';
    
    Map<String, dynamic> data = jsonDecode(response.body);
    
  4. 注意事项

    • Android 权限:在 AndroidManifest.xml 中添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    • iOS 配置:iOS 默认支持 HTTP,若需 HTTP 明文请求,需在 Info.plist 中配置例外域。

推荐使用 dio,它支持拦截器、文件上传、超时设置等高级功能,更适合复杂场景。

回到顶部