bloc 이벤트 클래스 생성할 때 getter 를 override 하는 이유는 뭔가요?
154
1 asked
아래처럼 이벤트의 getter를 오버라이드 하는 이유가 뭘까요?
오버라이드를 하건, 하지 않건 동작은 할 것 같은데 그냥 템플릿 처럼 사용을 하는 것인가요, 아니면 성능이 더 뛰어난가요?
abstract class CountEvent extends Equatable {}
class AddCountEvent extends CountEvent {
@override
List<Object> get props => [];
}
Answer 1
0
질문에 답변을 드리겠습니다.
우선, 오버라이드(Override)는 부모 클래스로부터 상속받은 메서드나 속성을 자식 클래스에서 재정의할 필요가 있을 때 사용됩니다.
그래서 부모 클래스인 CountEvent 클래스를 보면 abstract 클래스로 정의 되어있고 이 클래스 역시 extends 상속을 Equatable를 받고 있습니다. Equatable을 사용하기 위해서는 반드시 정의해줘야 하는 것이 있는데 그것이 바로 props 입니다.
Equatable은 객체간 비교를 손쉽게 해주는 라이브러리입니다.
Dart에서는 기본적으로 == 연산자를 사용하면 객체의 참조를 비교하는데, Equatable을 사용하면 props 배열에 정의된 멤버 변수들을 비교하여 값이 같으면 같은 객체로 인식할 수 있도록 도와줍니다.
따라서 props 정의는 필수적으로 해줘야 하는데 abstract 클래스로 CountEvent를 만들어줬기 때문에 props 정의를 자식 요소들에게 책임을 넘기게 된 것입니다. 즉, CountEvent를 상속받는 클래스들은 반드시 props를 정의해야만 사용이 가능하고 그렇게 정의하므로 인해 같은 이벤트가 여러 번 발생해도 동일한 이벤트로 인식할 수 있어 BLoC 패턴에서 불필요한 상태 변화를 방지할 수 있습니다.
질문에 답이 되었으면 좋겠습니다.
감사합니다.
cursor ai가 업데이트 되서 ui가 바뀌었는데 반영은 안될까요?
0
9
1
강의 잘 봤습니다.
0
30
2
25강 앱 아이콘 만드는 방법에서 그래픽 소스는 어디에 있나요?
0
28
1
자동화 프로그램 프로젝트
0
36
1
198강 (){onTap(e);}의 이해 돕기
0
53
1
Node 관련 질문입니다
0
62
3
구글 소셜 로그인 후 로그인 시 구글에러
0
53
2
실습중(개인 비용 관리 앱) 문의드려요
0
55
2
6강에 비디오가 이상해요
0
46
2
Isar 마지막 업데이트는 2년전입니다.
0
53
0
Chat GPT API 설정하기 프롬프트
0
81
2
FlutterSecureStorage 질문
0
51
0
구글 플레이 등록 시, Privact Policy URL 등록 팁
0
66
1
질문있습니다!
0
31
0
2-8강 Websocket server running on port가 안 뜹니다.
0
55
2
video_call 플러그인 설치후 에러 발생
0
64
1
회차마다 있는 실습
1
58
2
계정 관련 문의
0
73
2
구글 플레이스토어 배포시 테스트 요건
1
99
2
flutter bloc 질문이 있어요
0
93
1
잘 모르겠어요
0
288
1
후속 강의 질문
0
277
1
안드로이드 스튜디오 에뮬레이터 권장사양
0
1249
1
8-1에서 build하는 app 별 상태가 다르게 나오는데 원인이 무엇일까요?
0
498
1

