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로 감쌀 경우 기존의 테스트 코드가 모두 에러가 난다. 이건 어떻게 해야 하지?