👩🏻‍💻 Develop 133

[Compose] 단방향 데이터 흐름

State :  위에서 아래로만 내려간다 - 일반적으로 상위 컴포넌트(부모)에서 하위 컴포넌트(자식)로 전달- UI 상태를 한 곳 (보통 부모 컴포넌트) 에서 관리해서  UI 컴포넌트(자식)는 그 상태에 대한 직접적인 수정이 불가능 -> 캡슐화 Event :  아래에서 위로 올라간다- UI 일부에서 이벤트를 생성해 위로 전달- 그 이벤트를 부모에게 알려주고 부모가 해당 이벤트에 대한 처리- 이벤트 발생 -> 이벤트 핸들러가 상태 변경(업데이트) -> 상태가 변경되면 state holder에서 변경된 상태 UI 표시 - 부모는 이벤트를 처리하고 상태를 변경 후, 새로운 상태를 다시 자식에게 전달. 자식은 상태 변경에 대한 영향을 받지만 직접적으로 상태를 수정불가  테스트 하기 용이하고, ui에 일관성 ex..

🤖 Compose 2025.01.23

[Compose] Navigation

라이브러리 추가가 필요합니다 [libs.version.toml][versions]//...navigationVersion = "2.8.5"[libraries]//...androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationVersion" } [build.gradle]implementation(libs.androidx.navigation.compose) Navigation은 화면 간 전환을 관리하는 중요한 요소입니다예제를 통해 각각 필요한 개념을 익혀보겠습니다   NavController- 현재 Navigation 상태 관리, 화면 간 이동을 처리- 각 ..

🤖 Compose 2025.01.22

[Compose] compositionLocal

CompositionLocal을 통해 전역 상태를 선언, 이를 CompositionLocalProvider를 사용해 하위 Composable에 전달할 수 있다특정 값을 하위 Composable에주입하는 데 유용함val LocalExampleValue = compositionLocalOf { "기본 값" }@Composablefun ParentComposable() { CompositionLocalProvider(LocalExampleValue provides "제공된 값") { ChildComposable() }}@Composablefun ChildComposable() { val value = LocalExampleValue.current Text(text = valu..

🤖 Compose 2025.01.21

[프로그래머스 / Kotlin ] 귤 고르기

k개를 고를 때 크기가 서로 다른 종류가 총 몇개가 되는지에 대한 문제 처음엔 서로 다른 종류 중 가장 적은 무게를 구하는 줄 알았는데 그게 아니라 단순히 서로 다른 종류 수의 최솟값이다  1. 우선 빈도수 별로 배열을 정리해야겠다고 생각 -> Map 로 바꾸기var map = tangerine.toList().groupingBy{ it }.eachCount()k가 2일 때 [1,1,1,1,2,2,2,3]은 이렇게 정렬된다 {1=4, 2=3, 3=1} 2. 빈도수가 높은 순으로 내림차순 정렬it.value를 더해서 k보다 같거나 크면 끝이니까..!val sortedEntries = map.entries.sortedByDescending { it.value } 3. 서로 다른 종류가 몇 종류가 들어가야하는..

[Compose] Compose 주의점

1. Scaffold 사용 시 padding예전엔 Scaffold의 content에 직접 Column을 배치해도 문제가 없었는데, 최근 Studio 버전에서는 Lint 검사가 강화되어서 Scaffold의 content에 padding을 적용해야 경고, 오류가 안 뜬다    2. Card의 elevation  예전에는 Card의 elevation 속성에 직접 Dp 값 사용가능 - Material Design 3로 업데이트 되면서 CardElevation 객체를 사용하도록 변경됨   3. LazyColumn items- LazyColumn의 items 함수에 List를 직접 전달해 아이템 표시가 가능했는데 Compose 1.2.0 버전부터는 items 함수가 변경되어 더 이상 List를 직접 전달할 수 없다..

🤖 Compose 2025.01.17

[Compose] SideEffect

SideEffect- Composable 함수는 입력 값이 변경될 때마다 재실행되며, UI를 업데이트. 하지만, UI 업데이트와 직접적인 관련이 없고, Composable 함수의 재실행 시마다 반복적으로 실행될 필요가 없는 작업이 side-effect- 즉, 상태 값과 직접적으로 관련 없는 UI 작업들이 Composable 함수에서 불필요하게 재호출되는 것을 방지하기 위해 사용  LaunchedEffect : Composable 안에서 suspend func 실행- 하나 이상의 key를 paramater로 받아야 한다 (ex. error.value) - key가 바뀌지 않는 이상 같은 코루틴을 사용하고, key가 바뀌면 기존 코루틴을 취소하고 다시 코루틴을 만들어 실행fun test( flavors..

🤖 Compose 2025.01.16

[Compose] Animation

AnimatedVisibility- visibility에 Animated 적용- Transition이 enter, exit 따로 나눠져있다- FadeTransition:  나타날 때, 사라질 때 투명도를 조절해 부드럽게 변하는 효과- SlideTransition:  화면의 한 쪽에서 다른 쪽으로 이동하며 나타나고 사라지는 효과- ExpandTransition:  펼쳐지거나 축소되며 나타나고 사라지는 효과, 주로 패널이나 리스트 항목에 사용- ScaleTransition:  크기를 확대하거나 축소하면서 나타나거나 사라지는 효과 이런 식으로 사용 ..! textVisible은 아래와 같이 선언되어있다 var textVisible by remember { mutableStateOf(false) } Animat..

🤖 Compose 2025.01.08