другой класс для Дио во флаттере
Я создаю класс для dio. Все мои подключения к серверу происходят в этом классе. Теперь я хочу вызвать onError и onSuccess в другом классе. Пример этого был сделан на Java с интерфейсом.
Спасибо
1 ответ
Решение
Я сделал вот так. Сначала создайте общий класс дио,
class NetworkRepository {
Future<String> getRequest(String url) async {
var dio = Dio();
print(url.toString());
dio.interceptors.add(InterceptorsWrapper(
onRequest:(RequestOptions options) async {
print("REQUEST[${options?.method}] => PATH: ${options?.path}");
return options; //continue
},
onResponse:(Response response) async {
print("RESPONSE[${response?.statusCode}] => PATH: ${response?.request?.path}");
return response; // continue
},
onError: (DioError err) async {
print("ERROR[${err.toString()}] => PATH: ${err?.request?.path}");
return err;//continue
}
));
Response response = await dio.get(url);
print(response.toString());
return response.toString();
}
dynamic requestInterceptor(RequestOptions options) async {
return options;
}
}
и когда вы хотите вызвать его в любом своем классе,
NetworkRepository().getRequest(projects).then((onValue) {
var dataConvertedToJSON = json.decode(onValue);
print(dataConvertedToJSON);
setState(() {
ProjectModel model = ProjectModel.fromJson(dataConvertedToJSON);
mList.add(model);
});
});
Также вы можете попробовать шаблон Bloc.