rememberSaveable

remember 함수로 선언된 상태는 컴포저블이 재구성될 때 상태 데이터가 유지된다

그런데 화면 회전과 같은 remember 함수들을 포함하고 있는 액티비티의 상태 변경에도 상태가 그대로 유지되게 하고 싶을 수 있다

이 때 쉽게 사용할 수 있는 함수다

remeber와 rememberSaveable 두 함수를 모두 사용하고 화면 회전을 일으키면 remember로 선언된 내용은 초기화된다

ProvidableCompositionLocal

매개변수 지옥에 빠지지 않게 해주는 객체다

val LocalProvider: ProvidableCompositionLocal<Int> = compositionLocalOf {0}
val StaticLocalProvicer: ProvidableCompositionLocal<Int> = staticCompositionLocalOf {0}

compositionLocalOf 함수는 해당 상태를 이용하는 컴포저블 함수만 재구성된다

staticCompositionLocalOf 함수는 해당 상태를 이용하는 함수부터 계층을 타고 올라가 모든 상위 컴포저블 함수가 재구성된다

상태를 하위 컴포저블에 공개해주는 방식은 다음과 같다

CompositionLocalProvicer(LocalProvider provides count) {
	LocalChild()
}

매개변수로 선언된 부분은 코틀린의 infix 기법을 사용한 것이다 LocalProvider.provides(count) 와 같다

AnimatedVisibility

Box는 추가된 컴포접르을 겹쳐서 출력한다

따라서 이 컴포저블을 사용해서 visible boolean 값을 이용해 페이드인, 페이드아웃으로 보여지는 컴포저블을 조절할 수 있다

ConstraintLayout