본문 바로가기
Android Compose

Composable functions with non-default parameters are not supported in Preview unless they are annotated with @PreviewParameter

by 히예네 2024. 7. 14.
728x90
반응형

Compose로 마이그레이션하는 도중, @Preview가 안먹혀서 에러를 확인해봤다. 

 

Composable functions with non-default parameters are not supported in Preview unless they are annotated with @PreviewParameter 

@Composable 함수안에 디폴트 파라미터가 없다면, @PreviewParameter를 달아야 프리뷰를 볼 수 있다는 이야기였다. 

 

이 에러가 뜬 이유는? viewmodel을 파라미터에 넣는 순간 저 에러가 났다. 

@Composable 함수 파라미터에 viewmodel이 들어오면 제한이 생긴다는 공식문서 내용을 발견했다.

안드로이드 컴포즈 프리뷰: https://developer.android.com/develop/ui/compose/tooling/previews

 

1. 우선 프리뷰에서 사용할 데이터를 제공하는 클래스를 만든다.

이 클래스는 PreviewParameterProvier<*>를 상속받아 만든다. 

class UserPreviewParameterProvider : PreviewParameterProvider<User> {
    override val values = sequenceOf(
        User("Elise"),
        User("Frank"),
        User("Julia")
    )
}

 

2. 그리고 @Preview 어노테이션을 추가한 함수 파라미터 작성 시, @PreviewParameter 붙여 프리뷰에 보낼 데이터를 알려준다. 

@Preview
@Composable
fun UserProfilePreview(
    @PreviewParameter(UserPreviewParameterProvider::class) user: User
) {
    UserProfile(user)
}

 

 

728x90
반응형