• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

Stream result 질문

22.12.16 11:49 작성 22.12.16 11:53 수정 조회수 254

0

안녕하세요 선생님. 날씨가 많이 쌀살한데, 건강 관리는 잘 하고 계시는지요 ?

다름이 아니라 선생님 강의를 보고 제가 하는 프로젝트에 적용해보고 있는데 궁금증이 생겨 질문드립니다.

  1. 첨부한 사진을 보시면 Future가 아닌 Stream으로 데이터를 처리하고 있는데 Result 를 통해 Usecase 영역에서 .when을 통해 결과 값이 success 일 때, error 일 때 분기 처리를 해주고 싶은데 Stream일 경우 Result를 어떻게 처리를 해주어야 하나요 ? 마지막 사진의 result.when 에 접근이 되지 않아 방법이 떠오르지 않습니다.

     

  2. Stream 을 첫 데이터 수신 이후 5초 주기로 수신하고자 하는데, 첫 번째 사진과 같이 함수를 작성하니 첫 데이터 호출 부터 5초가 지연이 됩니다. 첫 데이터 수신은 1초, 그 후 5초로 변경하고자 하는데 어떤 방법을 사용해야 하나요 ?

     

긴 글 읽어주셔서 감사합니다.

스크린샷 2022-12-16 오전 11.38.08.png

스크린샷 2022-12-16 오전 11.35.40.png

스크린샷 2022-12-16 오전 11.35.24.png

답변 1

답변을 작성해보세요.

1

  1. Stream 의 경우에는 listen() 메서드에서 수신을 하는데요. UseCase 가 아닌 ViewModel에서 처리하시면 될 것 같습니다.
    스트림.listen((result) => result.when( ... ) )으로 처리할 수 있습니다.

     

  2. 두 번째 질문의 솔루션은 여러가지가 있는데 다음과 같이 Stream 을 생성할 수 있습니다. 참고해 보세요.

 

Stream<String> lines() async* {
  await Future.delayed(const Duration(seconds: 1));
  yield 'Hello';

  while (true) {
    await Future.delayed(const Duration(seconds: 5));
    yield 'Hello';
  }
}