인프런 커뮤니티 질문&답변

신상훈님의 프로필 이미지
신상훈

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

15 에러 처리

freezed Result 클래스 생성시 오류가 발생하여 문의 드립니다.

작성

·

316

1

  • - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
  • - 먼저 유사한 질문이 있었는지 검색해보세요.
  • - 서로 예의를 지키며 존중하는 문화를 만들어가요.
  • - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
강의 버전과 다르게 작업 중이긴 하지만 도큐멘트도 큰차이가 보이지 않아
진행했지만 오류가 발생하여 문의 드립니다.

확인 부탁드립니다. 감사합니다.
-------

Flutter 3.1.0-0.0.pre.1506 • channel master • https://github.com/flutter/flutter.git
Framework • revision 4b5be42f2d (12 days ago) • 2022-07-05 18:39:08 -0400
Engine • revision ed6adf55e0
Tools • Dart 2.18.0 (build 2.18.0-256.0.dev) • DevTools 2.15.0

-------- 에러 로그 
Marked Result with @freezed, but freezed has nothing to generate
package:image_search/data/data_source/result.dart:6:16
  ╷
6 │ abstract class Result<T> with _$Result<T> {
  │                ^^^^^^
  ╵

--------- 코드
part 'result.freezed.dart';

@freezed
abstract class Result<T> with _$Result<T> {
factory Result.success(T data) => Success;
factory Result.error(String message) => Error;
}

답변 2

2

오준석님의 프로필 이미지
오준석
지식공유자

화살표가 아니라 = 입니다.

part 'result.freezed.dart';

@freezed
abstract class Result<T> with _$Result<T> {
factory Result.success(T data) = Success;
factory Result.error(String message) = Error;
}

 

그리고 지금은 이대로 하면 무시해도 되는 경고가 나오는데요.
현재 공식 문서에 조금 바뀌었네요. 다음과 같이 수정하면 경고 없이 깔끔하게 진행되네요.

part 'result.freezed.dart';

@freezed
class Result<T> with _$Result<T> {
const factory Result.success(T data) = Success;
const factory Result.error(String message) = Error;
}
신상훈님의 프로필 이미지
신상훈
질문자

화살표를 잘못 보았습니다. 
상세한 답변 감사합니다. 

factory 사용법을 보니 return 문을 쓰거나 화살표를 사용하는데,
팩토리 메서드 내에서 "="는 freezed가 사용하는 문법이 맞나요?

오준석님의 프로필 이미지
오준석
지식공유자

아니오. 원래 Dart 문법에서 다음처럼 가능합니다. freezed 안 쓰면 좌측 코드처럼 작성합니다.

오준석님의 프로필 이미지
오준석
지식공유자

= 을 사용하는 것이 typedef 를 보시면 일맥상통하니 이해가 되실 것 같습니다.

https://dart.dev/guides/language/language-tour#typedefs

1

추가적인 질문을 하려했는데 미리 답변을 주셨군요.

친절한 답변 감사드립니다.

신상훈님의 프로필 이미지
신상훈

작성한 질문수

질문하기