flutter Http请求库Dio的一个简单封装

1,545 阅读1分钟

直接上代码

import 'package:dio/dio.dart';
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart'; //使用本地缓存策略获取token

class Http {
  Response resp;
  Dio dio = new Dio();
  Future<SharedPreferences> _prefs = SharedPreferences.getInstance(); 
  String host = '*******'; 这里存放你的API URL
  Future get(String url, {Map query}) async {
    final SharedPreferences prefs = await _prefs;
    try {
      resp = await dio.get(host+url,
          options: Options(headers: {"token":prefs.getString('token')/*获取token*/}), queryParameters: query);
      if (resp.statusCode == 200) {
        var result = resp.data;
        var res = jsonDecode(result);
        return res;
      } else {
        print('请求出错');
      }
    } catch (e) {
      return e;
    }
  }

  Future post(String url, {data}) async {
    final SharedPreferences prefs = await _prefs;
    try {
      resp =
          await dio.post(host+url, options: Options(headers: {"token":prefs.getString('token')}), data: data);
      if (resp.statusCode == 200) {
        var result = resp.data;
        var res = jsonDecode(result);
        return res;
      } else {
        print('请求出错');
      }
    } catch (e) {
      return e;
    }
  }
}