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

Flutter网络请求完全指南

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

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://www.gaijilu.com/?id=165

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

解密微信数据库文件解析

解密微信数据库文件解析

图解说明:微信大量数据存储在本地比如:联系人(包含好友地区、电话、通过那种方式添加)、聊天内容(图片、文字、语音、视频、位置、名片、其他app分享链接)、聊天室、收藏信息、朋友圈内容(包含好友详情、点赞、评论);摇一摇、附近人、最近联系人、好友请求、图片存放路径;微信内置的表情包;如联系人:聊天信息...

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

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

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

地震突然来临怎么办?手机上这个设置关键时刻能保命,不同机型方法汇总→

地震突然来临怎么办?手机上这个设置关键时刻能保命,不同机型方法汇总→

今天,甘肃定西市陇西县(北纬34.91度,东经104.58度)发生5.6级地震,震源深度10千米。“中国地震台网”全国地震预警微信小程序向周边49万用户推送了预警信息。如何设置地震预警?地震预警功能非常重要,提前几秒钟的预警都是紧急避险的宝贵时间。如何第一时间接收到地震预警信息?第一步:微信搜索“国...

微信、支付宝、网购订单模拟生成截图软件

微信、支付宝、网购订单模拟生成截图软件

通过简单的设置,可以方便的生成您想要的截图。如微信对话、微信转账、微信红包、微信钱包、微信零钱、支付宝聊天对话、支付宝转账等强大功能 。有了这款软件用户可以随意编辑截图,包括聊天内容,手机壁纸,甚至是转账截图,都可以进行自定义的调整,为大家的生活提供了更多的便利。复制链接到浏览器打开,注册、下载安装...

关闭这几个设置,手机瞬间杜绝监听偷窥

1. 关闭多余定位权限所有无关 APP,全部关掉定位只给地图、外卖临时用拒绝 24 小时跟踪你的行踪2. 关闭相机、麦克风权限小游戏、杂牌软件、工具箱全部禁用相机 + 麦克风防止后台偷偷录音、偷拍3. 关闭自动读取剪贴板杜绝 APP 偷看你复制的密码、验证码、聊天内容隐私再也不被偷偷收集4. 关闭后...

手机隐私防泄露指南,普通人必看

普通人手机隐私防泄露完整指南覆盖日常使用、权限、软件、支付、社交、拍照、定位七大核心场景,简单好操作,普通人照着设置就能大幅降低隐私泄露、被偷拍、被诈骗风险。一、基础权限:关掉所有没必要的授权关闭 APP 过度权限相册、麦克风、摄像头、定位、通讯录、存储、后台弹窗,非必要全部设为「仅使用时允许」或「...

发表评论

访客

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