Flutter Dio联网封装成NetUtils

Posted by アライさん on 2019年10月22日

统一定义api地址列表,api.dart

1
2
3
4
5
class Api{

flutter-go.alibaba.net/';
static const String DO_LOGIN = BASE_URL+'doLogin';//登陆
}

net_utils.dart

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import 'dart:async';
import 'dart:io';
import 'package:dio/dio.dart';

Map<String,dynamic> optHeader = {
'accept-language':'zh-cn',
'content-type':'application/json'
};

var dio = new Dio(BaseOptions(connectTimeout: 30000,headers: optHeader));

class NetUtils {

static Future get(String url, [Map<String, dynamic> params]) async {
var response;

if (params != null) {
response = await dio.get(url, queryParameters: params);
} else {
response = await dio.get(url);
}
return response.data;
}

static Future post(String url, Map<String, dynamic> params) async {
var response = await dio.post(url, data: params);
return response.data;
}
}

data_utils.dart

1
2
3
4
5
6
7
class DataUtils {
static Future<UserInfo> doLogin(Map<String, String> params) async {
var response = await NetUtils.post(Api.DO_LOGIN, params);
UserInfo userInfo = UserInfo.fromJson(response['data']);
return userInfo;
}
}

使用:

1
2
3
4
DataUtils.doLogin({'username': username, 'password': password})
.then((result) {}).catchError((onError) {
print(onError);
});