Eu tenho um stateful chamado LoginUiStateFul, ao qual utilizo para armazenar meus estados, via construtor eu recebo um Contexto e o StateHolder ( um data class utilizado para deter os dados da tela).
internal class LoginUiStateFul(
private val context: Context,
private val userState: UserState
) {
var userEmail = mutableStateOf(context.getString(R.string.empty))
private set
var userPassword = mutableStateOf(context.getString(R.string.empty))
private set
var passwordVisibility = mutableStateOf(false)
private set
var typeErro = mutableStateOf(userState.data?.typesErro)
private set
fun userEmailChange(value: String) {
userEmail.value = value
}
fun userPasswordChange(value: String) {
userPassword.value = value
}
fun passwordVisibilityChange(value: Boolean) {
passwordVisibility.value = value
}
fun geTrailingIcon(): String {
return if (passwordVisibility.value) {
context.getString(R.string.hide)
} else {
context.getString(R.string.show)
}
}
}
Se eu cosumir os estados desse stateful, eles não irão se manter durante uma rotação de tela.
Visto isso, criei uma variavel do tipo rememberSavable e atribui minha LoginUiStateFul a ela.
val context = LocalContext.current
val stateHolder by viewModel.userState.collectAsState()
val stateFul = rememberSaveable { LoginUiStateFul(context, stateHolder) }
Em tempo de compilação ocorre esse crash
java.lang.IllegalArgumentException: com.example.login.activity.login.presentation.stateholder.LoginUiStateFul@92a92fd cannot be saved using the current SaveableStateRegistry. The default implementation only supports types which can be stored inside the Bundle. Please consider implementing a custom Saver for this class and pass it to rememberSaveable().
Esse tipo de dado não é possivel salvar dentro de um bundle a IDE meio que sugere criar um saver custimizado, como deveria proceder nesse cenário?