Result 클래스를 활용한 에러 처리법

테디준·2022년 8월 25일
0

result 클래스는 성공할 때는 데이터를, 실패할 때는 Exception을 담는 객체를 정의한다.

<Result 사용의 효과>

1. null 객체가 모두 제거된다.
2. 여러가지 결과에 대해 서로 다른 방식으로 처리할 수 있다.

Api 부분에 try-catch 문법으로 에러가 생길 부분을 감싸고, Result를 사용해 성공과 실패의 경우를 설정해준다.

이제 Stream을 이용해 UI에 에러가 생겼음을 알려줘야 한다.

1회성 알림이라 notifyChange()는 사용할 수 없다.

final _eventController = StreamController<String>();

  Stream<String> get eventStream => _eventController.stream;
위의 코드를 viewModel에 넣어준다. 화면에 init State를 써서 그 안에 쓴다.
Future.microtask(() {
      final viewModel = context.read<ImageSearchViewModel>();
      viewModel.eventStream.listen((event) {
        showSnackBar:
        (message) {
          final snackBar = SnackBar(
            content: Text(message),
          );
          ScaffoldMessenger.of(context).showSnackBar(snackBar);
        };
      });

😱 result로 감쌀 경우 기존의 테스트 코드가 모두 에러가 난다. 이건 어떻게 해야 하지?

0개의 댓글