[Compose] Composable에서 context 호출하기 (LocalContext)

지프치프·2025년 2월 1일
0

Compose

목록 보기
1/1

개요

Compose를 사용하면 보통 Composable 함수들은 Class 외부에 선언을 주로 한다. 이때 Class 외부에 있다보니 context를 가져올 수가 없었는데 LocalContext 를 사용하면 context를 쉽게 가져올 수 있다.

예제

사용방법은 굉장히 간단하다.
아래 샘플 소스를 통해 살펴보자

@Preview(showSystemUi = true)
@Composable
fun ExampleComposable() {
    /**
     * 버튼을 누르면 Progress를 출력하고 터치방지 플래그를 3초간 설정한다.
     */
    val activity = (LocalContext.current as MainActivity)
    var isProgress by remember { mutableStateOf(false) }

    Column(
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally,
        modifier = Modifier.fillMaxSize()
    ) {
        Button(onClick = {
            isProgress = !isProgress
        }) {
            Text(text = "Progress")
        }

        if(isProgress) {
            CircularProgressIndicator(modifier = Modifier.align(Alignment.CenterHorizontally))
            LaunchedEffect(Unit) {
                activity.window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
                delay(3000)
                activity.window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)
            }
        }
    }
}

LocalContext는 프레임워크 내에 전역변수로 선언되어 있어
특별한 설정없이 바로 호출해주면 된다.

LocalContext.current 를 호출하면 현재 Context를 반환해주는데
Composable 함수 내에서만 호출이 가능하기 때문에
함수 상단에 변수로 할당해주고 사용해주는 것이 좋을 것 같다.

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

profile
지프처럼 거침없는 개발을 하고싶은 개발자

0개의 댓글

관련 채용 정보