bloc 이벤트 클래스 생성할 때 getter 를 override 하는 이유는 뭔가요?
164
작성한 질문수 1
아래처럼 이벤트의 getter를 오버라이드 하는 이유가 뭘까요?
오버라이드를 하건, 하지 않건 동작은 할 것 같은데 그냥 템플릿 처럼 사용을 하는 것인가요, 아니면 성능이 더 뛰어난가요?
abstract class CountEvent extends Equatable {}
class AddCountEvent extends CountEvent {
@override
List<Object> get props => [];
}
답변 1
0
질문에 답변을 드리겠습니다.
우선, 오버라이드(Override)는 부모 클래스로부터 상속받은 메서드나 속성을 자식 클래스에서 재정의할 필요가 있을 때 사용됩니다.
그래서 부모 클래스인 CountEvent 클래스를 보면 abstract 클래스로 정의 되어있고 이 클래스 역시 extends 상속을 Equatable를 받고 있습니다. Equatable을 사용하기 위해서는 반드시 정의해줘야 하는 것이 있는데 그것이 바로 props 입니다.
Equatable은 객체간 비교를 손쉽게 해주는 라이브러리입니다.
Dart에서는 기본적으로 == 연산자를 사용하면 객체의 참조를 비교하는데, Equatable을 사용하면 props 배열에 정의된 멤버 변수들을 비교하여 값이 같으면 같은 객체로 인식할 수 있도록 도와줍니다.
따라서 props 정의는 필수적으로 해줘야 하는데 abstract 클래스로 CountEvent를 만들어줬기 때문에 props 정의를 자식 요소들에게 책임을 넘기게 된 것입니다. 즉, CountEvent를 상속받는 클래스들은 반드시 props를 정의해야만 사용이 가능하고 그렇게 정의하므로 인해 같은 이벤트가 여러 번 발생해도 동일한 이벤트로 인식할 수 있어 BLoC 패턴에서 불필요한 상태 변화를 방지할 수 있습니다.
질문에 답이 되었으면 좋겠습니다.
감사합니다.
vscode or 안드로이드 디바이스가 아닌 웹으로 실행했을때..
0
44
2
성능 분석 툴 공유
1
58
2
146 자료는 학습완료가 체크가 안돼요
0
42
1
'플러터 개발환경 세팅하기' 링크 클릭시, 악성 스크립트 설치 유도 페이지로 이동하니 조심하시길 바랍니다.
0
80
2
[강의 문의] '앱 출시하기' 강의 추가 일정 관련하여 문의드립니다.
0
47
1
안드로이드 기기 실행 오류
0
71
2
플러터 세팅 후 새폴더 생성건
0
67
2
강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.
0
68
2
강의 자료는 어디있나요?
0
52
1
이미지 업로드해도 프로필에 x만 떠요
0
74
3
cursor ai가 업데이트 되서 ui가 바뀌었는데 반영은 안될까요?
0
86
2
강의 잘 봤습니다.
0
56
2
25강 앱 아이콘 만드는 방법에서 그래픽 소스는 어디에 있나요?
0
55
1
자동화 프로그램 프로젝트
0
52
1
198강 (){onTap(e);}의 이해 돕기
0
82
1
Node 관련 질문입니다
0
130
3
구글 소셜 로그인 후 로그인 시 구글에러
0
80
2
실습중(개인 비용 관리 앱) 문의드려요
0
82
2
6강에 비디오가 이상해요
0
74
2
flutter bloc 질문이 있어요
0
100
1
잘 모르겠어요
0
295
1
후속 강의 질문
0
284
1
안드로이드 스튜디오 에뮬레이터 권장사양
0
1266
1
8-1에서 build하는 app 별 상태가 다르게 나오는데 원인이 무엇일까요?
0
506
1





