아래와 같이 compose를 이용해서 modalsheet를 만들고

compose 함수에 적용하려 했으나 오류가 났다.

<오류>

스택오버플로우에 검색해보니
1. 모달시트의 컴포저블 어노테이션을 지우거나(delete @Composable)
2. 콤퓨타에게 돌려돌려 말하는 것이었다
Column {
var isClicked by mutableStateOf(false)
Button(onClick = { isClicked = true }) { Text(text = "Click Me") }
if (isClicked) {
// display your composable
}
}
그러나 2번의 경우 IconButton에서 되지 않았고 난 ModalBottomSheet를 컴포저블로 구현하고 싶었다.
if (isClicked) {
함수명, 함수 속 코드
}
실패 ㅠ
이번에 컴포즈 함수를 갖는 일반 함수를 만들었는데도 같은 에러가 떴다.
두 가지 방법을 생각해봤다. ModalSheet()라는 컴포즈 함수를 나타나게해야했는데
1. 역으로, IconButton을 갖고 와 ModalSheet()에, 혹은 다른 컴포즈 함수를 또 만들어보기
2. XML처럼 ID 부과하여 Button ID
실.패.
onCreate에서 같이 묶으면 될까도 했지만 실패다
따학
Button의 onClick의 경우 compos가 안 먹는다고 하긴 했으나. 돌아서 하는 방법이 없었다.
결국 ModalBottomSheet는 MDC로 구현하기로 했다.
안된김에 왜 안되는지 이유를 찾아보았다.
1. 순환 참조 방지
Compose는 함수 호출의 순서를 엄격히 유지한다. Compose 내에서는 컴포지션 트리에 호출되는 함수가 배치되는데 button이 만약 어떠한 Compose 함수에 종속되어버리면 안됨.
2. onClick로 전달되는 함수는 컴포지션 범위 위부에 있음!!
애초에 이렇습니다.ㅎ