request<T> method
Позволяет создавать запросы к Апи Вк
В T
указываем возвращаемый тип результата выполнения запроса.
Implementation
Future<ApiResponse<T>> request<T>(
String methodName,
Map<String, Object> params,
) async {
final langConclusion = switch (params['lang']) {
LangApi() => (params['lang']! as LangApi).index,
int() || String() => params['lang']!,
_ => _language.index
};
params.remove('lang');
final requestOptions = {
'access_token': _token,
'lang': langConclusion,
'v': _version,
...params,
};
// ignore: unnecessary_null_checks
final Response(:data!) = await _dio.post<Map<String, dynamic>>(
_baseUrl + methodName,
data: requestOptions.entries.map((e) => '${e.key}=${e.value}').join('&'),
options: Options(contentType: 'application/x-www-form-urlencoded'),
);
final error = (data['error'] as Map?)?.cast<String, dynamic>();
final response = data['response'] as Object?;
if (error != null) {
throw ApiException.fromJson(error);
}
return ApiResponse<T>(
data: response as T,
requestOptions: requestOptions..remove('access_token'),
);
}