(240607) Medium Daily Digest

Godomin·2024년 6월 7일

Medium-Daily-Digest

목록 보기
17/24

State Management in Jetpack Compose: ViewModel vs. Remember Function

https://blog.stackademic.com/state-management-in-jetpack-compose-viewmodel-vs-remember-function-5fc78cdec92f

컴포즈에서는 ViewModel과 UI계층에서의 remember 사이의 경계가 흐려질 수 있다. 컴포저블 수준에서 상태를 가지는 것은 단기적으로는 더 간단하고 효율적이어 보일 수 있지만, 추후 확장성 등을 고려했을 때 잠재적인 부작용을 가질 수 있다. ViewModel을 사용하는 중앙 집중식 접근방식이 확장성, 일관성 측면에서 좋다.

Nested LazyColumn in Jetpack Compose

https://blog.kotlin-academy.com/nested-lazycolumn-in-jetpack-compose-79cc5d56c603

LazyList

Header, footer 예제

LazyColumn {
    item {
        HeroCardItem()
    }
    items(data) { item ->
        Box(
            modifier = Modifier
                .fillMaxWidth()
                .height(200.dp)
                .background(Color.Magenta)
                .padding(16.dp)
        )
        Spacer(modifier = Modifier.padding(8.dp))
    }
    item {
        FooterCardItem()
    }

}

LazyGrid

LazyVerticalGrid(
    columns = GridCells.Adaptive(minSize = 128.dp),
    contentPadding = PaddingValues(8.dp)
) {
    items(data.size) { index ->
        Card(
            modifier = Modifier
                .padding(4.dp)
                .fillMaxWidth(),
        ) {
            Text(
                text = data[index],
                fontWeight = FontWeight.Bold,
                textAlign = TextAlign.Center,
                modifier = Modifier.padding(16.dp)
            )
        }
    }

}

Flow layout

기존 view system의 chip과 유사하다.

Nested LazyList

가로+세로라면 그대로 구현 하면 된다.
같은 방향이라면, nested list의 크기를 고정하든지 lazy가 아닌 일반 list를 사용해야 한다.

LazyListScope

LazyListScope의 확장함수로 아이템을 그린다.

fun LazyListScope.EventItem(
	eventList: List<Event>,
    onEventClick: (String) -> Unit
) {
	items(eventList) { eventData ->
    	...
    }
}

0개의 댓글