当前位置:首页 > 修改聊天记录 > 正文内容

Flutter网络请求完全指南

网页编辑6个月前 (04-27)修改聊天记录289

lutter 网络请求完全指南(从入门到实战,一次搞定)

这是最全、最实用、企业级的 Flutter 网络请求指南,包含:
基础 http、王者 dio、拦截器、缓存、错误处理、文件上传下载、Token 刷新、封装通用类。
你直接复制就能用!

一、最常用的两个网络库

1. http(官方基础库,轻量)

yaml
dependencies:
  http: ^1.1.0

2. dio(企业级首选,功能最强)

yaml
dependencies:
  dio: ^5.4.0  pretty_dio_logger: ^1.3.1  # 日志打印

二、GET 请求(最常用)

1. http 实现

dart
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);
  }}

2. Dio 实现(推荐)

dart
import 'package:dio/dio.dart';Future<void> fetchData() async {
  Dio dio = Dio();
  Response response = await dio.get('https://api.example.com/data');
  print(response.data);}

三、POST 请求

dart
// Dio Postawait dio.post(
  'https://api.example.com/login',
  data: {
    'username': 'test',
    'password': '123456',
  },);

四、请求头、Token、参数

dart
Response response = await dio.get(
  'url',
  queryParameters: {'page': 1, 'size': 10}, // URL 参数
  options: Options(
    headers: {
      'Authorization': 'Bearer $token',
      'Content-Type': 'application/json',
    },
  ),);

五、Dio 拦截器(核心!企业必备)

用途:统一添加 Token、日志、错误处理、请求加密
dart
dio.interceptors.add(InterceptorsWrapper(
  onRequest: (options, handler) {
    // 添加Token
    options.headers['Authorization'] = 'Bearer xxx';
    return handler.next(options);
  },
  onResponse: (response, handler) {
    return handler.next(response);
  },
  onError: (e, handler) {
    print('出错啦:${e.message}');
    return handler.next(e);
  },));// 日志插件(超级好用)dio.interceptors.add(PrettyDioLogger());

六、文件上传(FormData)

dart
FormData formData = FormData.fromMap({
  'file': await MultipartFile.fromFile('path/image.jpg'),});await dio.post('upload', data: formData);

七、文件下载

dart
await dio.download(
  'https://example.com/file.pdf',
  '/save/path/file.pdf',
  onReceiveProgress: (count, total) {
    print('进度:$count / $total');
  },);

八、错误处理(完整)

dart
try {
  await dio.get('url');} on DioException catch (e) {
  if (e.type == DioExceptionType.connectionTimeout) {
    print('连接超时');
  } else if (e.response?.statusCode == 401) {
    print('Token 过期');
  }}

九、企业级 Dio 封装(万能模板)

dart
class HttpUtil {
  static late Dio dio;

  static void init() {
    dio = Dio(BaseOptions(
      baseUrl: 'https://api.example.com',
      connectTimeout: Duration(seconds: 10),
      receiveTimeout: Duration(seconds: 10),
    ));
    dio.interceptors.add(PrettyDioLogger());
  }

  static Future get(String url, {Map<String, dynamic>? params}) async {
    try {
      Response res = await dio.get(url, queryParameters: params);
      return res.data;
    } catch (e) {
      print(e);
      return null;
    }
  }

  static Future post(String url, {dynamic data}) async {
    try {
      Response res = await dio.post(url, data: data);
      return res.data;
    } catch (e) {
      print(e);
      return null;
    }
  }}
使用:
dart
HttpUtil.init();HttpUtil.get('/user').then((data) {
  print(data);});

十、你可能需要的高级功能

  • JSON 解析:json_serializable

  • 请求缓存:dio_cache_interceptor

  • Cookie 管理:cookie_jar

  • 多请求取消:CancelToken

  • 自动刷新 Token:拦截器实现

  • 请求加密 / 签名:拦截器统一处理


我可以给你提供

  1. 完整 Flutter 网络请求封装项目模板

  2. 带状态管理(Provider/Riverpod)的网络请求

  3. 带刷新 Token + 重试机制

  4. 带 JSON 解析自动生成工具


扫描二维码推送至手机访问。

版权声明:本文由手机数据加工厂发布,如需转载请注明出处。

本文链接:https://gaijilu.com/?id=165

“Flutter网络请求完全指南” 的相关文章

倾情打造最新款WX外挂链接同步修改器,仿真度高,操作便捷

微信同步修改,改单专用链接,微信改双向链接,同步修改器,仿真度高,操作便捷,支持测试。测试添加薇:gaijilu-com,或者直接联系本站右下角“在线客服”也可以。...

为什么你的手机总卡顿?关闭这10个隐藏设置,让你的手机流畅如新

为什么你的手机总卡顿?关闭这10个隐藏设置,让你的手机流畅如新

“家人们,你们有没有这样的体验,半年不到,手机就卡成狗,刷视频,聊微信,一直转圈圈,不管怎么点屏幕都没有任何反应!”最近后台一堆粉丝吐槽:“科普君,新手机像牛奶般丝滑,半年后卡成拖拉机,难道非得换(机)?”别急!今天直接上硬核操作——关闭10个隐藏设置,老机瞬间原地复活!1.关闭 系统自动更新-坑爹...

4 种方法永久保存微信聊天记录,永不丢失

4 种方法永久保存微信聊天记录,永远不会丢方法一:用电脑微信备份(最靠谱、最全)登录电脑版微信,找到备份功能,把手机聊天记录完整存到电脑里。文字、图片、语音、视频、文件全都能保存,不会漏掉。备份好之后,再复制一份存到 U 盘或者移动硬盘里。就算换手机、卸载微信、手机坏掉,记录也能随时找回来。方法二:...

手机与电脑如何传递数据

手机+电脑 极简传文件速查表(直接照做,保存备忘录) 一、通用懒人(所有手机+电脑,小文件) 微信/QQ文件传输助手 1. 手机、电脑登录同一账号 2. 互相发送图片、文档、截图 3. 缺点:视频、图片会压缩,大文件慢 二、有线极速(原图/大视频/无压缩,推荐) 安卓 + 电...

苹果iPhone+Mac如何开启WiFi+蓝牙

下面直接给你「一步到位」的极简版,照着点就行(为了隔空投送,**Wi‑Fi 和蓝牙都要开,不需要连同一个 Wi‑Fi 也能投送**)。 --- iPhone 打开 Wi‑Fi + 蓝牙(两种方法) 方法1:控制中心(最快) - 全面屏 iPhone(带刘海):**右上角往下滑**...

 如何清理手机中的重复文件?

如何清理手机中的重复文件?

一、安卓(华为 / 小米 / OPPO/vivo)1. 一键清理所有重复文件(照片 + 文档 + 安装包)打开手机管家 / 安全中心 /i 管家进入清理加速 / 空间清理扫描完找到重复文件 → 去清理全选重复项 → 删除(自动保留一份)2. 相册重复照片 / 视频(最占空间)华为:相册 → 相册管理...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。