오늘은 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임을 알게 됩니다.