@Composable
fun Greeting() {
val expanded = remember { mutableStateOf(false) }
...
}
@Composable
fun MyApp() {
var shouldShowOnboarding by remember { mutableStateOf(true) }
if (shouldShowOnboarding) {
OnboardingScreen(/* TODO */)
} else {
Greetings()
}
}
shouldShowOnboarding
을 온보딩 화면과 공유해야 하지만, 직접 전달하지는 않습니다. OnboardingScreen
이 상태를 변경하도록 하는 대신 사용자가 버튼을 클릭했을 때 앱에 알리도록 하는 것이 더 좋습니다.
이벤트는 콜백으로 전달합니다. onContinueClicked: () -> Unit
전달되는 함수로 이벤트가 발생되면 실행되게 됩니다.
@Composable
fun OnboardingScreen(onContinueClicked: () -> Unit) {
Surface {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Welcome to the Basics Codelab!")
Button(
modifier = Modifier
.padding(vertical = 24.dp),
onClick = onContinueClicked
) {
Text("Continue")
}
}
}
}
@Composable
private fun Greetings(names: List<String> = List(1000) { "$it" } ) {
LazyColumn(modifier = Modifier.padding(vertical = 4.dp)) {
items(items = names) { name ->
Greeting(name = name)
}
}
}
var shouldShowOnboarding by rememberSaveable { mutableStateOf(true) }