작성
·
118
0
retrofit에서 요청 후에 인터셉터 이후에 UI 단에서 스낵바를 띄우기 위해 상태코드를 반환 받고 싶은데 Response타입을 반환 시키려면 파일을 임의로 수정해주어야 하더라고요 혹시 다른 방법이 있을까요?
@POST('/reservation')
@Headers({'Authorization': 'true'})
Future<Response<dynamic>> makeReservation({
@Body() required ReservationRequestModel reservation,
});
child: IconButton(
onPressed: () {
reservationRepositoryProvide
.getRepository()
.makeReservation(
reservation: ReservationRequestModel(
meetingRoomId: widget.room.id,
reservationStartTime: selectReservationTimeData
.selectedFullDate.value!
.add(1.seconds),
reservationEndTime: selectReservationTimeData
.selectedFullDate.value!
.add(const Duration(hours: 1)),
members: 4,
))
.then((res) {
if (res.statusCode == 201) {
context.showSnackbar(
message: '예약 완료 되었습니다. 마이페이지에서 확인해주세요', isSuccess: true);
} else {
final errorMessage = res.data['errorMessage'];
context.showSnackbar(
message: errorMessage, isSuccess: false);
}
});
},
현재 상태 코드를 반환 시켜 스낵바를 띄워주는데
아래처럼 retrofit 코드를 임의로 고쳐야하네요
@override
Future<Response<dynamic>> makeReservation(
{required ReservationRequestModel reservation}) async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{r'Authorization': 'true'};
_headers.removeWhere((k, v) => v == null);
final _data = <String, dynamic>{};
_data.addAll(reservation.toJson());
final _result = await _dio
.fetch<Map<String, dynamic>>(_setStreamType<Response<dynamic>>(Options(
method: 'POST',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/reservation',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
// final value = Response<dynamic>.fromJson(_result.data!);
return _result;
}
다른 방법이 있을까요?
답변 1
0
안녕하세요!
생성 파일은 직접 수정하시면 안됩니다.
언제든지 재생성 할 수 있는 파일이기 때문입니다.
반환 타입을 Future<HttpResponse>로 변경해보세요!
관련 링크 첨부해드립니다.
감사합니다!
감사합니다 저도 파일을 수정하고 싶지 않았는데 방법을 몰라서 하고있었네요ㅠㅠ 감사합니다