Skip to content

Commit 18e7844

Browse files
committed
update examples
1 parent c37e96c commit 18e7844

25 files changed

+319
-273
lines changed

dio/lib/src/dio_mixin.dart

+11-11
Original file line numberDiff line numberDiff line change
@@ -617,38 +617,38 @@ abstract class DioMixin implements Dio {
617617
}
618618

619619
// Initiate Http requests
620-
Future<Response<T>> _dispatchRequest<T>(RequestOptions options) async {
621-
var cancelToken = options.cancelToken;
620+
Future<Response<T>> _dispatchRequest<T>(RequestOptions reqOpt) async {
621+
var cancelToken = reqOpt.cancelToken;
622622
ResponseBody responseBody;
623623
try {
624-
var stream = await _transformData(options);
624+
var stream = await _transformData(reqOpt);
625625
responseBody = await httpClientAdapter.fetch(
626-
options,
626+
reqOpt,
627627
stream,
628628
cancelToken?.whenCancel,
629629
);
630630
responseBody.headers = responseBody.headers;
631631
var headers = Headers.fromMap(responseBody.headers);
632632
var ret = Response(
633633
headers: headers,
634-
request: options,
634+
request: reqOpt,
635635
redirects: responseBody.redirects ?? [],
636636
isRedirect: responseBody.isRedirect,
637637
statusCode: responseBody.statusCode,
638638
statusMessage: responseBody.statusMessage,
639639
extra: responseBody.extra,
640640
);
641-
var statusOk = options.validateStatus(responseBody.statusCode);
642-
if (statusOk || options.receiveDataWhenStatusError == true) {
641+
var statusOk = reqOpt.validateStatus(responseBody.statusCode);
642+
if (statusOk || reqOpt.receiveDataWhenStatusError == true) {
643643
var forceConvert = !(T == dynamic || T == String) &&
644-
!(options.responseType == ResponseType.bytes ||
645-
options.responseType == ResponseType.stream);
644+
!(reqOpt.responseType == ResponseType.bytes ||
645+
reqOpt.responseType == ResponseType.stream);
646646
String? contentType;
647647
if (forceConvert) {
648648
contentType = headers.value(Headers.contentTypeHeader);
649649
headers.set(Headers.contentTypeHeader, Headers.jsonContentType);
650650
}
651-
ret.data = await transformer.transformResponse(options, responseBody);
651+
ret.data = await transformer.transformResponse(reqOpt, responseBody);
652652
if (forceConvert) {
653653
headers.set(Headers.contentTypeHeader, contentType);
654654
}
@@ -667,7 +667,7 @@ abstract class DioMixin implements Dio {
667667
);
668668
}
669669
} catch (e) {
670-
throw assureDioError(e, options);
670+
throw assureDioError(e, reqOpt);
671671
}
672672
}
673673

dio/lib/src/entry/dio_for_native.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import '../options.dart';
1010
import '../dio_error.dart';
1111
import '../adapters/io_adapter.dart';
1212

13-
Dio createDio([BaseOptions? options]) => DioForNative(options);
13+
Dio createDio([BaseOptions? baseOptions]) => DioForNative(baseOptions);
1414

1515
class DioForNative with DioMixin implements Dio {
16-
/// Create Dio instance with default [Options].
17-
/// It's mostly just one Dio instance in your application.
18-
DioForNative([BaseOptions? options]) {
19-
this.options = options ?? BaseOptions();
16+
/// Create Dio instance with default [BaseOptions].
17+
/// It is recommended that an application use only the same DIO singleton.
18+
DioForNative([BaseOptions? baseOptions]) {
19+
options = baseOptions ?? BaseOptions();
2020
httpClientAdapter = DefaultHttpClientAdapter();
2121
}
2222

dio/lib/src/options.dart

+5-2
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,6 @@ class _RequestConfig {
528528
}) {
529529
// Case-insensitive Map, eg: content-type and Content-Type are regard as the same key.
530530
this.headers = caseInsensitiveKeyMap(headers);
531-
this.contentType = contentType;
532531
this.method = method ?? 'GET';
533532
this.sendTimeout = sendTimeout ?? 0;
534533
this.receiveTimeout = receiveTimeout ?? 0;
@@ -571,7 +570,11 @@ class _RequestConfig {
571570
/// you can set `ContentType.parse('application/x-www-form-urlencoded')`, and [Dio]
572571
/// will automatically encode the request body.
573572
set contentType(String? contentType) {
574-
headers[Headers.contentTypeHeader] = contentType?.trim();
573+
if(contentType!=null){
574+
headers[Headers.contentTypeHeader] = contentType.trim();
575+
}else{
576+
headers.remove(Headers.contentTypeHeader);
577+
}
575578
}
576579

577580
String? get contentType => headers[Headers.contentTypeHeader];

example/adapter.dart

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import 'dart:async';
2+
import 'dart:typed_data';
23
import 'package:dio/dio.dart';
34
import 'package:dio/adapter.dart';
45

56
class MyAdapter extends HttpClientAdapter {
6-
DefaultHttpClientAdapter _adapter = DefaultHttpClientAdapter();
7+
final DefaultHttpClientAdapter _adapter = DefaultHttpClientAdapter();
78

89
@override
910
Future<ResponseBody> fetch(RequestOptions options,
10-
Stream<List<int>> requestStream, Future cancelFuture) async {
11-
Uri uri = options.uri;
11+
Stream<Uint8List>? requestStream, Future? cancelFuture) async {
12+
var uri = options.uri;
1213
// hook requests to google.com
13-
if (uri.host == "google.com") {
14-
return ResponseBody.fromString("Too young too simple!", 200);
14+
if (uri.host == 'google.com') {
15+
return ResponseBody.fromString('Too young too simple!', 200);
1516
}
1617
return _adapter.fetch(options, requestStream, cancelFuture);
1718
}
@@ -22,11 +23,11 @@ class MyAdapter extends HttpClientAdapter {
2223
}
2324
}
2425

25-
main() async {
26+
void main() async {
2627
var dio = Dio();
2728
dio.httpClientAdapter = MyAdapter();
28-
Response response = await dio.get("https://google.com");
29+
var response = await dio.get('https://google.com');
2930
print(response);
30-
response = await dio.get("https://baidu.com");
31+
response = await dio.get('https://baidu.com');
3132
print(response);
3233
}

example/cancel_request.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import 'dart:async';
22
import 'package:dio/dio.dart';
33

4-
main() async {
4+
void main() async {
55
var dio = Dio();
66
dio.interceptors.add(LogInterceptor());
77
// Token can be shared with different requests.
8-
CancelToken token = CancelToken();
8+
var token = CancelToken();
99
// In one minute, we cancel!
1010
Timer(Duration(milliseconds: 500), () {
11-
token.cancel("cancelled");
11+
token.cancel('cancelled');
1212
});
1313

1414
// The follow three requests with the same token.
15-
var url1 = "https://www.google.com";
16-
var url2 = "https://www.facebook.com";
17-
var url3 = "https://www.baidu.com";
15+
var url1 = 'https://www.google.com';
16+
var url2 = 'https://www.facebook.com';
17+
var url3 = 'https://www.baidu.com';
1818

1919
await Future.wait([
2020
dio

example/cookie_mgr.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import 'package:dio/dio.dart';
22
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
33
import 'package:cookie_jar/cookie_jar.dart';
44

5-
main() async {
5+
void main() async {
66
var dio = Dio();
77
var cookieJar = CookieJar();
88
dio.interceptors..add(LogInterceptor())..add(CookieManager(cookieJar));
9-
await dio.get("https://baidu.com/");
9+
await dio.get('https://baidu.com/');
1010
// Print cookies
11-
print(cookieJar.loadForRequest(Uri.parse("https://baidu.com/")));
11+
print(cookieJar.loadForRequest(Uri.parse('https://baidu.com/')));
1212
// second request with the cookie
13-
await dio.get("https://baidu.com/");
13+
await dio.get('https://baidu.com/');
1414
}

example/custom_cache_interceptor.dart

+10-10
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import 'package:dio/dio.dart';
55
class CacheInterceptor extends Interceptor {
66
CacheInterceptor();
77

8-
var _cache = Map<Uri, Response>();
8+
final _cache = <Uri, Response>{};
99

1010
@override
1111
Future onRequest(RequestOptions options) async {
12-
Response response = _cache[options.uri];
13-
if (options.extra["refresh"] == true) {
14-
print("${options.uri}: force refresh, ignore cache! \n");
12+
var response = _cache[options.uri];
13+
if (options.extra['refresh'] == true) {
14+
print('${options.uri}: force refresh, ignore cache! \n');
1515
return options;
1616
} else if (response != null) {
17-
print("cache hit: ${options.uri} \n");
17+
print('cache hit: ${options.uri} \n');
1818
return response;
1919
}
2020
}
@@ -30,15 +30,15 @@ class CacheInterceptor extends Interceptor {
3030
}
3131
}
3232

33-
main() async {
33+
void main() async {
3434
var dio = Dio();
35-
dio.options.baseUrl = "https://baidu.com";
35+
dio.options.baseUrl = 'https://baidu.com';
3636
dio.interceptors
3737
..add(CacheInterceptor())
3838
..add(LogInterceptor(requestHeader: false, responseHeader: false));
3939

40-
await dio.get("/"); // second request
41-
await dio.get("/"); // Will hit cache
40+
await dio.get('/'); // second request
41+
await dio.get('/'); // Will hit cache
4242
// Force refresh
43-
await dio.get("/", options: Options(extra: {'refresh': true}));
43+
await dio.get('/', options: Options(extra: {'refresh': true}));
4444
}

example/dio.dart

+30-28
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,30 @@
11
import 'dart:io';
22
import 'package:dio/dio.dart';
33

4-
main() async {
4+
void main() async {
55
var dio = Dio();
66
dio.options
7-
..baseUrl = "http://httpbin.org/"
7+
..baseUrl = 'http://httpbin.org/'
88
..connectTimeout = 5000 //5s
99
..receiveTimeout = 5000
10-
..validateStatus = (int status) {
11-
return status > 0;
10+
..validateStatus = (int? status) {
11+
return status != null && status > 0;
1212
}
1313
..headers = {
1414
HttpHeaders.userAgentHeader: 'dio',
1515
'common-header': 'xx',
1616
};
1717

18-
// Or you can create dio instance and config it as follow:
19-
// var dio = Dio(BaseOptions(
20-
// baseUrl: "http://www.dtworkroom.com/doris/1/2.0.0/",
21-
// connectTimeout: 5000,
22-
// receiveTimeout: 5000,
23-
// headers: {
24-
// HttpHeaders.userAgentHeader: 'dio',
25-
// 'common-header': 'xx',
26-
// },
27-
// ));
28-
18+
// Or you can create dio instance and config it as follow:
19+
// var dio = Dio(BaseOptions(
20+
// baseUrl: "http://www.dtworkroom.com/doris/1/2.0.0/",
21+
// connectTimeout: 5000,
22+
// receiveTimeout: 5000,
23+
// headers: {
24+
// HttpHeaders.userAgentHeader: 'dio',
25+
// 'common-header': 'xx',
26+
// },
27+
// ));
2928
dio.interceptors
3029
..add(InterceptorsWrapper(
3130
onRequest: (RequestOptions options) {
@@ -36,13 +35,13 @@ main() async {
3635
))
3736
..add(LogInterceptor(responseBody: false)); //Open log;
3837

39-
Response response = await dio.get("https://www.google.com/");
38+
var response = await dio.get('https://www.google.com/');
4039

4140
// Download a file
4241
response = await dio.download(
43-
"https://www.google.com/",
44-
"./example/xx.html",
45-
queryParameters: {"a": 1},
42+
'https://www.google.com/',
43+
'./example/xx.html',
44+
queryParameters: {'a': 1},
4645
onReceiveProgress: (received, total) {
4746
if (total != -1) {
4847
print('$received,$total');
@@ -51,24 +50,27 @@ main() async {
5150
);
5251

5352
// Create a FormData
54-
FormData formData = FormData.fromMap({
55-
"age": 25,
56-
"file": await MultipartFile.fromFile(
57-
"./example/upload.txt",
58-
filename: "upload.txt",
53+
var formData = FormData.fromMap({
54+
'age': 25,
55+
'file': await MultipartFile.fromFile(
56+
'./example/upload.txt',
57+
filename: 'upload.txt',
5958
)
6059
});
6160

6261
// Send FormData
63-
response = await dio.post("/test", data: formData);
62+
response = await dio.post('/test', data: formData);
6463
print(response);
6564

6665
// post data with "application/x-www-form-urlencoded" format
6766
response = await dio.post(
68-
"/test",
67+
'/test',
6968
data: {
70-
"id": 8,
71-
"info": {"name": "wendux", "age": 25}
69+
'id': 8,
70+
'info': {
71+
'name': 'wendux',
72+
'age': 25,
73+
}
7274
},
7375
options: Options(
7476
contentType: Headers.formUrlEncodedContentType,

example/download.dart

+19-14
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,30 @@ import 'dart:io';
33
import 'package:dio/dio.dart';
44

55
// In this example we download a image and listen the downloading progress.
6-
main() async {
6+
void main() async {
77
var dio = Dio();
88
dio.interceptors.add(LogInterceptor());
99
// This is big file(about 200M)
1010
// var url = "http://download.dcloud.net.cn/HBuilder.9.0.2.macosx_64.dmg";
1111

1212
var url =
13-
"https://cdn.jsdelivr.net/gh/flutterchina/[email protected]/docs/imgs/book.jpg";
13+
'https://cdn.jsdelivr.net/gh/flutterchina/[email protected]/docs/imgs/book.jpg';
1414

1515
// var url = "https://www.baidu.com/img/bdlogo.gif";
16-
await download1(dio, url, "./example/book.jpg");
17-
await download1(dio, url, (Headers headers) => "./example/book1.jpg");
18-
await download2(dio, url, "./example/book2.jpg");
16+
await download1(dio, url, './example/book.jpg');
17+
await download1(dio, url, (Headers headers) => './example/book1.jpg');
18+
await download2(dio, url, './example/book2.jpg');
1919
}
2020

2121
Future download1(Dio dio, String url, savePath) async {
22-
CancelToken cancelToken = CancelToken();
22+
var cancelToken = CancelToken();
2323
try {
24-
await dio.download(url, savePath,
25-
onReceiveProgress: showDownloadProgress, cancelToken: cancelToken);
24+
await dio.download(
25+
url,
26+
savePath,
27+
onReceiveProgress: showDownloadProgress,
28+
cancelToken: cancelToken,
29+
);
2630
} catch (e) {
2731
print(e);
2832
}
@@ -31,17 +35,18 @@ Future download1(Dio dio, String url, savePath) async {
3135
//Another way to downloading small file
3236
Future download2(Dio dio, String url, String savePath) async {
3337
try {
34-
Response response = await dio.get(
38+
var response = await dio.get(
3539
url,
3640
onReceiveProgress: showDownloadProgress,
3741
//Received data with List<int>
3842
options: Options(
39-
responseType: ResponseType.bytes,
40-
followRedirects: false,
41-
receiveTimeout: 0),
43+
responseType: ResponseType.bytes,
44+
followRedirects: false,
45+
receiveTimeout: 0,
46+
),
4247
);
4348
print(response.headers);
44-
File file = File(savePath);
49+
var file = File(savePath);
4550
var raf = file.openSync(mode: FileMode.write);
4651
// response.data is List<int> type
4752
raf.writeFromSync(response.data);
@@ -53,6 +58,6 @@ Future download2(Dio dio, String url, String savePath) async {
5358

5459
void showDownloadProgress(received, total) {
5560
if (total != -1) {
56-
print((received / total * 100).toStringAsFixed(0) + "%");
61+
print((received / total * 100).toStringAsFixed(0) + '%');
5762
}
5863
}

0 commit comments

Comments
 (0)