• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

mutableStateOf에 초기값을 안 넣을 수는 없을까요?

23.08.02 17:02 작성 조회수 333

1

강사님 강의 덕분에 쉽고 빠르게 Compose를 학습하고 있습니다.

 

강의를 레퍼런스 삼아서 Compose로만 앱을 제작하고 있는데요

 

ViewModel에서 State를 사용해서 여러 작업을 하는 도중
초기값이 필요 없는 경우가 생겼습니다.

 

하지만 State에 초기값을 넣어주지 않으면 에러가 발생해
private val allItem = mutableStateOf<List<ItemEntity>?>(null) val allItem: State<List<ItemEntity>?> = allItem
이렇게 null을 넣어서 사용 중인데

이러다 보니 매번 null 체크를 해줘야하는 번거로움이 발생하고 코틀린의 장점을 잘 활용 못하고 있다는 생각이 들었습니다.

 

당연히 State에 초기값을 안 넣어주고 사용하는 법도 찾아봤는데 일단 원하는 답은 찾지 못했습니다.

 

혹시 어떻게 하면 좋을까요?

 

 

답변 1

답변을 작성해보세요.

1

State에 넣을 데이터가 List 라면 빈 리스트를 넣으면 됩니다.

private val allItem = mutableStateOf(emptyList<ItemEntity>()) 정도가 되겠네요

edu02님의 프로필

edu02

질문자

2023.08.03

답변 감사합니다!

혹시 그렇다면 List가 아닌 data class일 경우는 어떻게 하면 될까요?


private val item = mutableStateOf<ItemEntity?>(null)

val item: State<ItemEntity?> = item

이러한 형식은 어떻게 null 값을 벗어날 수 있을까요?

상태들을 한번더 State 홀더용 클래스로 묶는 방법이 있습니다.

https://developer.android.com/topic/architecture/ui-layer/events?hl=ko 에서 NewsUiState 가 그러한 용도의 클래스입니다.

예를 들면 다음과 같이요.

data class UiState(val item: ItemEntity?)