官方代码 rememberPagerState(listSaver 使用)
fun rememberPagerState(
initialPage: Int = 0,
initialPageOffsetFraction: Float = 0f
): PagerState {
return rememberSaveable(saver = PagerState.Saver) {
PagerState(initialPage = initialPage, initialPageOffsetFraction = initialPageOffsetFraction)
}
}
val Saver: Saver<PagerState, *> = listSaver(
save = {
listOf(
it.currentPage,
it.currentPageOffsetFraction
)
},
restore = {
PagerState(
initialPage = it[0] as Int,
initialPageOffsetFraction = it[1] as Float
)
}
)
mapSaver
val CitySaver = run {
val nameKey = "Name"
val countryKey = "Country"
mapSaver(
save = { mapOf(nameKey to it.name, countryKey to it.country) },
restore = { City(it[nameKey] as String, it[countryKey] as String) }
)
}
rememberSaveable 处理因意外导致页面销毁重建,数据不丢失问题。