init method
main.dart initialize BaseOptions
void main() {
GrockDioServices.instance.init(
baseUrl: 'https://jsonplaceholder.typicode.com',
connectTimeout: 5000,
receiveTimeout: 3000,
logger = GrockDioLogger.default(),
setAuthorizationToken: () async {
final tokenValue = await getToken();
final mapData = {"Authorization": "Bearer $tokenValue"};
return mapData;
},
);
runApp(MyApp());
}
and use Api Request ----------------- request example -----------------
final request = await GrockDioServices.request(
method: GrockDioType.get,
path: '/posts',
queryParameters: {"userId": 1},
).grockResponseHandler(
success: (response) => Model.fromJson(response.data),
error: (err) => Toast.show(err.toString()),
loading: () => print("loading"),
done: () => print("done"),
);
Implementation
Future<void> init({
/// optionally you can add your own Dio
Dio? dio,
/// added required String baseUrl,
required String baseUrl,
/// added milliseconds
int? connectTimeout,
/// added milliseconds
int? receiveTimeout,
/// added headers
Map<String, dynamic>? headers,
/// added queryParameters
Map<String, dynamic>? queryParameters,
/// optionally you can add your own BaseOptions
Options? request,
/// async get token and headers add token
/// ```dart
/// void main() async {
/// WidgetsFlutterBinding.ensureInitialized();
/// await GrockDioServices.instance.init(
/// baseUrl: 'https://jsonplaceholder.typicode.com',
/// setAuthorizationToken: () async {
/// final tokenValue = await getToken();
/// final mapData = {"Authorization": "Bearer $tokenValue"};
/// return mapData;
/// },
/// );
/// runApp(MyApp());
/// ```
Future<Map<String, dynamic>?> Function()? setAuthorizationToken,
/// or set BaseOptions
BaseOptions? options,
/// Optionally you can add logger
GrockDioLogger? logger,
}) async {
if (setAuthorizationToken != null) {
final token = await setAuthorizationToken();
if (token != null) {
(headers ??= {}).addAll(token);
}
}
_dio = dio ??
Dio(
options ??
BaseOptions(
baseUrl: baseUrl,
connectTimeout: connectTimeout?.milliseconds,
receiveTimeout: receiveTimeout?.milliseconds,
headers: headers,
queryParameters: queryParameters,
responseType: ResponseType.json,
contentType: Headers.jsonContentType,
validateStatus: (status) => status! < 500,
),
);
if (logger != null && logger != GrockDioLogger.off()) {
_dio.interceptors.add(LogInterceptor(
responseBody: logger.requestBody,
request: logger.request,
requestHeader: logger.requestHeader,
responseHeader: logger.responseHeader,
error: logger.error,
requestBody: logger.requestBody));
}
}