오늘은 Flutter에서 자주 사용되는 제네릭 믹스인에 대해 알아보겠습니다. 다음 코드를 예로 들어 설명해 보겠습니다.
mixin DrawerPage<T extends ConsumerStatefulWidget> on ConsumerState<T> { }
믹스인 선언
DrawerPage
는 클래스가 아닌 믹스인입니다.제네릭 타입 <T>
사용
<T>
는 DrawerPage
내에서 T
를 타입으로 사용할 수 있다는 뜻입니다.T
는 나중에 실제 타입을 지정할 때 사용할 플레이스홀더 같은 거예요.T
의 제한
extends ConsumerStatefulWidget
은 T
가 ConsumerStatefulWidget
또는 그 하위 클래스여야 한다는 뜻입니다.사용 제한
on ConsumerState<T>
는 이 믹스인을 어디서 사용할 수 있는지 지정합니다.ConsumerState<T>
를 확장하는 클래스에서만 사용할 수 있어요.예를 들어 볼까요:
class MyDrawerWidget extends ConsumerStatefulWidget {
ConsumerState<MyDrawerWidget> createState() => MyDrawerWidgetState();
}
class MyDrawerWidgetState extends ConsumerState<MyDrawerWidget> with DrawerPage<MyDrawerWidget> {
// 상태 구현
}
이 경우:
T
는 MyDrawerWidget
이 됩니다.T
가 확실히 ConsumerStatefulWidget
임을 알게 됩니다.