bloc 이벤트 클래스 생성할 때 getter 를 override 하는 이유는 뭔가요?
142
작성한 질문수 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 패턴에서 불필요한 상태 변화를 방지할 수 있습니다.
질문에 답이 되었으면 좋겠습니다.
감사합니다.
Node 관련 질문입니다
0
16
2
구글 소셜 로그인 후 로그인 시 구글에러
0
21
1
실습중(개인 비용 관리 앱) 문의드려요
0
34
1
6강에 비디오가 이상해요
0
18
1
Isar 마지막 업데이트는 2년전입니다.
0
26
0
Chat GPT API 설정하기 프롬프트
0
44
2
FlutterSecureStorage 질문
0
25
0
구글 플레이 등록 시, Privact Policy URL 등록 팁
0
37
1
질문있습니다!
0
14
0
2-8강 Websocket server running on port가 안 뜹니다.
0
33
1
video_call 플러그인 설치후 에러 발생
0
41
1
회차마다 있는 실습
1
36
2
계정 관련 문의
0
45
2
구글 플레이스토어 배포시 테스트 요건
1
66
2
수강 기한 연장 요청드려도될까요..
1
45
2
화면이 안 나옵니다. 소리만 나와요
0
52
2
추가 강의 문의
0
48
1
vs code IDE
0
76
2
구글 개발자 계정 생성 관련 질문
0
63
1
flutter bloc 질문이 있어요
0
81
1
잘 모르겠어요
0
281
1
후속 강의 질문
0
270
1
안드로이드 스튜디오 에뮬레이터 권장사양
0
1232
1
8-1에서 build하는 app 별 상태가 다르게 나오는데 원인이 무엇일까요?
0
490
1





