import 'package:dio/dio.dart'; import 'package:flutter_picgo/api/qiniu_api.dart'; import 'package:flutter_picgo/api/tcyun_api.dart'; import 'package:flutter_picgo/api/upyun_api.dart'; const bool inProduction = const bool.fromEnvironment("dart.vm.product"); class NetUtils { Dio _dio; static NetUtils _instance; NetUtils._internal() { _dio = new Dio(BaseOptions( connectTimeout: 30000, receiveTimeout: 30000, sendTimeout: 30000)); /// Tcyun Interceptor dio.interceptors.add(TcyunInterceptor()); /// Upyun Interceptor dio.interceptors.add(UpyunInterceptor()); /// Qiniu Interceptor dio.interceptors.add(QiniuInterceptor()); /// Log Interceptor if (!inProduction) { /// Log dio.interceptors .add(LogInterceptor(requestBody: true, responseBody: true)); } } Dio get dio => _dio; static NetUtils getInstance() { if (_instance == null) { _instance = NetUtils._internal(); } return _instance; } /// get method Future get(String path, {Map queryParameters, Options options, CancelToken cancelToken, ProgressCallback onReceiveProgress}) async { return await dio.get(path, queryParameters: queryParameters, options: options, cancelToken: cancelToken, onReceiveProgress: onReceiveProgress); } /// post method Future post( String path, { data, Map queryParameters, Options options, CancelToken cancelToken, ProgressCallback onSendProgress, ProgressCallback onReceiveProgress, }) async { return await dio.post(path, data: data, queryParameters: queryParameters, options: options, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress); } /// put method Future put( String path, { data, Map queryParameters, Options options, CancelToken cancelToken, ProgressCallback onSendProgress, ProgressCallback onReceiveProgress, }) async { return await dio.put(path, data: data, queryParameters: queryParameters, options: options, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress); } /// delete method Future delete(String path, {data, Map queryParameters, Options options, CancelToken cancelToken}) async { return await dio.delete(path, data: data, queryParameters: queryParameters, options: options, cancelToken: cancelToken); } }