Flutter에서 제네릭 믹스인 이해하기

hur-kyuh-leez·2024년 8월 24일
0

오늘은 Flutter에서 자주 사용되는 제네릭 믹스인에 대해 알아보겠습니다. 다음 코드를 예로 들어 설명해 보겠습니다.

mixin DrawerPage<T extends ConsumerStatefulWidget> on ConsumerState<T> { }

이 코드는 무엇을 의미할까요?

  1. 믹스인 선언

    • DrawerPage는 클래스가 아닌 믹스인입니다.
    • 믹스인을 사용하면 여러 클래스에서 코드를 재사용할 수 있어요.
  2. 제네릭 타입 <T> 사용

    • <T>DrawerPage 내에서 T를 타입으로 사용할 수 있다는 뜻입니다.
    • T는 나중에 실제 타입을 지정할 때 사용할 플레이스홀더 같은 거예요.
  3. T의 제한

    • extends ConsumerStatefulWidgetTConsumerStatefulWidget 또는 그 하위 클래스여야 한다는 뜻입니다.
    • 이렇게 하면 타입 안전성을 보장할 수 있어요.
  4. 사용 제한

    • on ConsumerState<T>는 이 믹스인을 어디서 사용할 수 있는지 지정합니다.
    • ConsumerState<T>를 확장하는 클래스에서만 사용할 수 있어요.

어떻게 사용하나요?

예를 들어 볼까요:

class MyDrawerWidget extends ConsumerStatefulWidget {
  
  ConsumerState<MyDrawerWidget> createState() => MyDrawerWidgetState();
}

class MyDrawerWidgetState extends ConsumerState<MyDrawerWidget> with DrawerPage<MyDrawerWidget> {
  // 상태 구현
}

이 경우:

  • TMyDrawerWidget이 됩니다.
  • 믹스인은 T가 확실히 ConsumerStatefulWidget임을 알게 됩니다.
  • 타입 안전성을 유지하면서 드로어 기능을 사용할 수 있어요.
profile
벨로그에 생각을 임시로 저장합니다. 틀린건 틀렸다고 해주세요 :) 그래야 논리 학습이 강화됩니다.

0개의 댓글