flutter中 Dio 简单 封装

import 'dart:convert';

import 'package:dio/dio.dart';

/*
Dio封装 get,post 文件下載 down
*/
enum Method { get, post ,down}

Future sendRequest(String urlString, Method method, Map<String, dynamic> map) async {
try {
print('1');
Response response;
//实例化Dio对象
BaseOptions options = new BaseOptions(
baseUrl: "https://www.w3cschool.cn",
connectTimeout: 5000,
receiveTimeout: 3000,
);
Dio dio = new Dio(options);
var type = method;
switch (type) {
case Method.get:
print('get请求');
response = await dio.get(urlString, queryParameters: map);
break;
case Method.post:
print('post请求');
FormData formData = FormData.fromMap(map);
response = await dio.post(urlString, data: formData);
break;
case Method.down:
print('文件下载');
String savePath = map['savePath'];
response = await dio.download(urlString, savePath);
break;
}
print(response);
//成功返回数据
if (response.statusCode == 200) {
//json.decodez转化为dart对象
return json.decode(response.data);
} else {
throw Exception('接口异常了');
}
} catch (e) {
return print(e);
}
}

调用方式
sendRequest('/index/rightFloatAdvert', Method.post, {'data': 1})
.then((value) {
setState(() {
result = 'Post請求:${value}';
});
}).catchError((error) {
if (error) {
print(error.toString());
}
});


posted @ 2021-03-25 16:32  lxn*  阅读(523)  评论(1编辑  收藏  举报