Android/Compose5 [Compose] AI가 작성한 LaunchedEffect의 문제점, rememberUpdatedState 필자는 GPT 5.5 xHigh를 사용하던 도중 발생한 문제에 대해 정리한다. 아래 예시는 기능상으로 문제가 드러나지 않아, 커밋 전 미처 확인하지 못했던 코드의 일부입니다.AI가 생성한 초안에는 다음처럼 side-effect가 구현되어 있었습니다.@Composableprivate fun AuthEffectHandler( effect: Flow, onEffect: (Effect) -> Unit,) { val context = LocalContext.current LaunchedEffect(effect, context, backStack) { effect.collect { authEffect -> when (authEffect) { .. 2026. 7. 23. [Compose] Composable 함수 안에서 getString 사용 시 주의할 점 Resource 와 Context 사용 구분 필요Composable 안에서 다음과 같이 문자열을 가져올 수 있습니다.val message = stringResource(R.string.login_success)// LaunchedEffect 같은 side-effect 내부에서는 stringResource()를 직접 호출 불가val context = LocalContext.currentLaunchedEffect(Unit) { val message = context.getString(R.string.login_success)} 그러나 Context의 경우에는 Configuration (지역, 다크모드 등)이 변경되더라도 Resource가 변경되지 않는 문제가 발생하여, 이전에 표시되던 값이 유지될 수 있습니.. 2026. 7. 22. [Android] Compose를 활용한 Collapsing Toolbar Scaffold 제작기 ✏️ 안드로이드 Compose 기반의Collapsing Toolbar Scaffold 제작기 현재 회사에서 서비스중인 앱 중 일부를 기존 명령형 UI 방식인 View에서, Compose 기반으로 변경하게 되었습니다. 그러던 도중 아래와 같이 View 시스템의 CoordinatorLayout을 이용하여 Collapsing Toolbar와 TabRow 및 ViewPager2가 구현된 곳을 발견하였고, 이를 Compose에서 어떻게 구현할 것인지 고민이 되었습니다. Compose에서는 CoordinatorLayout이 없으며, CollapsingToolbarLayout 또한 없기에 한번 직접 구현해보기로 하였습니다. 구현해야 할 사항을 나열하면 아래와 같습니다. 아래로 스크롤 시, 헤더 영역(게임 주요 정보).. 2023. 7. 23. [안드로이드 Compose] 텍스트 중앙 정렬 맞추기 Compose에서 Modifier를 통해 Text를 세로 중앙 정렬을 하면 다른 컴포저블과 일치하지 않는다. 대부분 아래와 같이 verticalAlignment 속성을 이용하여 정렬할 것이다. Row( modifier = modifier .height(42.dp) .fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, ) { Checkbox( modifier = Modifier .padding(start = 2.dp) .size(13.dp), checked = isChecked, onCheckedChange = onChecked, colors = CheckboxDefaults.colors( checkmarkColor = White, checke.. 2022. 12. 14. [안드로이드 Compose] 애니메이션 생성 시 context by implicit receiver 에러 Subject AnimatedVisibility 을 통해 애니메이션 구현 시, 아래와 같은 에러가 출력되는 경우 can't be called in this context by implicit receiver. Use the explicit one if necessary The Challenge 왜 이런 문제가 발생했을까? 코드를 먼저 보자 Card( modifier = Modifier .width(300.dp) .wrapContentHeight(), elevation = CardDefaults.cardElevation(0.dp), shape = RoundedCornerShape(10.dp), ) { Box() { AnimatedVisibility( // Error! visible = true, enter.. 2022. 11. 22. 이전 1 다음