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
반응형
'Android Compose' 카테고리의 다른 글
Android Compose Slot API란? (0) | 2024.08.12 |
---|---|
XML에서 Compose로 마이그레이션 gradle 세팅하기 (feat. BOM이란?) (0) | 2024.07.14 |
선언형이란? (1) | 2024.07.13 |
Android 컴포즈를 쓰는 이유는? (1) | 2024.07.13 |
Android Kotlin Compose Proto DataStore (kotlin dsl) (0) | 2024.07.07 |