flutter 网络请求封装

总体的思路,

  1. 借助Dio,将其封装为一个工具类(dio_utils.dart)
  2. 封装请求服务(service_api.dart)
  3. 根据请求参数封装 请求model (RequireModel )
  4. 根据返回数据类型封装返回Entitiy(list_entity.dart。因为返回的data中是一个list,如果是一个string,直接在entiy中解析好,上层进行调用即可)
  5. data中的单个对象进行封装(PersionEntity),方便解析
  6. 使用

总的来说封装了这么多就是为了后期使用方便。

1、dio_utils.dart

import 'dart:async';
import 'package:dio/dio.dart';

import 'err_code.dart';
import 'method.dart';

class DioNetUtils {
  static final DioNetUtils _singleton = DioNetUtils._init();
  static Dio _dio;
  static const String text_type = "application/json; charset=utf-8";
  static const String from_type = "application/x-www-form-urlencoded";
  /// 是否是debug模式.
  static bool _isDebug = true;
  /// 打开debug模式.
  static void openDebug() {
    _isDebug = true;
  }

  DioNetUtils._init() {
    BaseOptions options = new BaseOptions(
      baseUrl: "https://www.baidu.com",
      connectTimeout: 1000 * 10,
      receiveTimeout: 1000 * 10,
      headers: {},
      //表示期望以那种格式(方式)接受响应数据。
      // 接受4种类型 `json`, `stream`, `plain`, `bytes`. 默认值是 `json`,
      responseType: ResponseType.json,
    );
    _dio = Dio(options);
    //添加拦截器
    _dio.interceptors.add(InterceptorsWrapper(
        onRequest: (RequestOptions options) {
          print("\n================== 请求数据 ==========================");
          print("url = ${options.uri.toString()}");
          print("headers = ${options.headers}");
          print("params = ${options.data}");
        },
        onResponse: (Response response) {
          print("\n================== 响应数据 ==========================");
          print("code &
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值