Lucien Guimaraes
02/28/2023, 6:50 PMSaver
? I would like to save a class looking like this: class TextFieldState(query: TextFieldValue, enable: Boolean, error: Boolean, focused: Boolean)
I tried a custom Saver implementation (in 🧵) but it doesn't work as TextFieldValue should have it's own Saver.@Composable
fun rememberTextFieldState(
query: TextFieldValue = TextFieldValue(),
enable: Boolean = false,
error: Boolean = false,
focused: Boolean = false,
): TextFieldState = rememberSaveable(saver = TextFieldStateSaver) {
TextFieldState(
query = query,
enable = enable,
error = error,
focused = focused,
)
}
val TextFieldStateSaver = listSaver<TextFieldState, Any>(
save = {
listOf(
it.query,
it.enable,
it.error,
it.focused,
)
},
restore = {
TextFieldState(
it[0] as TextFieldValue,
it[1] as Boolean,
it[2] as Boolean,
it[3] as Boolean
)
}
)
@Stable
class TextFieldState(
query: TextFieldValue,
enable: Boolean,
error: Boolean,
focused: Boolean,
) {
var query by mutableStateOf(query)
var enable by mutableStateOf(enable)
var error by mutableStateOf(error)
var focused by mutableStateOf(focused)
fun displayError() = error && focused.not()
}
Albert Chang
03/01/2023, 4:25 AMval Saver = listSaver(
save = {
listOf(
with(TextFieldValue.Saver) { save(it.query) },
it.enable,
it.error,
it.focused,
)
},
restore = {
TextFieldState(
TextFieldValue.Saver.restore(it[0])!!,
it[1] as Boolean,
it[2] as Boolean,
it[3] as Boolean
)
}
)
Lucien Guimaraes
03/01/2023, 11:23 AM