inflearn logo
강의

講義

知識共有

Flutter中級3編 - 依存性注入ガイド

네트워크 통신 에러 처리

解決済みの質問

331

xwlwhsx122708

投稿した質問数 8

0

안녕하세요. 수강 잘 하고 있습니다.

dio package를 사용하여 네트워크 처리를 하고 있는데 에러 처리관련해서 어디 부분에서 하는 것이 좋을 지 고민하다가 질문 올립니다.

현재는 viewmodel -> usecases -> usecase -> repository -> remoteDataSource -> dio 이렇게 의존성을 받고 있고, remoteDatasource 에서 필요한 데이터만 List<StudentModel> 이런식으로 뷰모델까지 보내고 있습니다. 그러나 네트워크 에러가 발생했을 때는 remoteDataSource에서 List<StudentModel> 이 아닌 실패했을 떄 모델을 전송하게 되는데 (ErrorModel) 그렇게 되면 뷰모델까지 타입이 동적으로 전해지기때문에 이게 맞나 생각이 들기도 합니다.

혹은 dio 부분에서 400 500 에러 일때 alert 를 띄울까 생각을 했지만 그렇게 되면 context를 dio 까지 끌고 가야되고 전역으로 관리해야 되서 맞지 않다고 생각했습니다. 실제로는 어떻게 처리하는 것이 현명할지 질문드립니다. 감사합니다.

flutter mvvm provider 클린-아키텍처 dependency

回答 1

0

survivalcoding

원하시는 해답은 중급 1편 - 클린아키텍처의 이미지 검색 앱에서 이미 다루었는데요.

Result 클래스를 만들어서 활용하시면 됩니다.

freezed 를 사용한 코드로 예시를 들면 다음과 비슷한 형태로 하시면 되겠습니다.

@freezed
sealed class Result<T> with _$Result<T> {
  const factory Result.success(T data) = Success;
  const factory Result.error(ErrorModel errorModel) = Error;
}

소스코드 참고: https://github.com/junsuk5/flutter-clean-architecture-course/blob/master/image-search-app/lib/data/data_source/result.dart

요즘은 freezed 보다 dart 공식 문법을 활용하는 것을 추천하오니 관련 내용 유튜브에 올린 영상을 참고하시기 바랍니다. https://youtu.be/Cl9FcNNbiu8?si=I6teJPb0K8WOG5-4

 

또한, dio 의 에러 처리의 경우에 alert 을 띄우려는 경우에도, 역시 중급 1편의 이미지 검색 앱에서 네트워크 에러 처리를 했던 것 처럼 UI 까지 이벤트를 Stream을 통해 끌고 올라와서 UI 에서 alert 을 띄우는 것을 추천합니다. Context 를 UI 보다 아래로 내려보내는 것은 대표적인 안티패턴이니까요.

이해가 안 되는 부분이 있다면 또 질문 주시기 바랍니다.

1

xwlwhsx122708

제가 필요했던 답변입니다. 감사합니다!!

198강 (){onTap(e);}의 이해 돕기

0

29

1

Node 관련 질문입니다

0

30

3

구글 소셜 로그인 후 로그인 시 구글에러

0

26

2

실습중(개인 비용 관리 앱) 문의드려요

0

43

2

6강에 비디오가 이상해요

0

27

2

Isar 마지막 업데이트는 2년전입니다.

0

30

0

수강연장부탁드려도될까요..

0

42

2

Chat GPT API 설정하기 프롬프트

0

46

2

FlutterSecureStorage 질문

0

31

0

구글 플레이 등록 시, Privact Policy URL 등록 팁

0

41

1

질문있습니다!

0

19

0

2-8강 Websocket server running on port가 안 뜹니다.

0

42

2

마스크 json url이 안보여서 공유합니다

0

66

1

DI 에 대해 문의 좀 드립니다.

0

114

2

Bad state 에러

0

188

1

여러 화면 di강의는 언제 나올 예정인가요?

0

187

1

Riverpod 프로바이더에 의존성 주입

0

955

1

remote data source impl

0

271

1

go router 의존성

0

282

1

객체가 아닌 일반 변수의 get it

0

282

1

뷰 모델 분리하기

0

334

1

데이터 추상화 문제

0

326

2

로그인(auth)관련 데이터 흐름

0

261

1

소스코드 공유

0

432

1