Colton Idle
08/04/2021, 1:12 AMColton Idle
08/04/2021, 1:13 AMdata class Validations(val text: String, val validated: Boolean)
@Composable
fun PasswordVerifierInputField(
value: String,
change: (String) -> Unit,
validations: List<Validations>
) {
TextField(value = value, onValueChange = { change(it) })
validations.forEach { Text(it.text, color = if (it.validated) Color.Green else Color.Red) }
}
This is the invoking code
var myText by remember { mutableStateOf("") }
val myValidations =
mutableStateListOf(
Validations("8 chars", false), Validations("Special char", false))
PasswordVerifierInputField(
myText,
{ update ->
myText = update
if (myText.isNotBlank()) {
// switch first validation to true as an example
myValidations[0] = myValidations[0].copy(validated = true)
}
},
myValidations)
For some reason, the 0th place validation text doesn't change colors
Also, does anyone have tips on whether I should keep Validations as a data class, or should that end up being a class that internally has 2 mutableStateOfs in it (one for text, and one for boolean)Nathan Castlehow
08/04/2021, 1:55 AMAbhishek Dewan
08/04/2021, 2:40 AMColton Idle
08/04/2021, 2:55 AMNathan Castlehow
08/04/2021, 2:58 AMval myValidations = remember { mutableStateListOf(
Validations("8 chars", false), Validations("Special char", false)) }
Colton Idle
08/04/2021, 2:59 AMColton Idle
08/04/2021, 3:00 AMvar myValidations by remember { mutableStateListOf("") }
Type 'SnapshotStateList<String>' has no method 'setValue(Nothing?, KProperty<*>, [ERROR : Type from delegate])' and thus it cannot serve as a delegate for var (read-write property)Colton Idle
08/04/2021, 3:00 AMimport androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
Nathan Castlehow
08/04/2021, 3:01 AMNathan Castlehow
08/04/2021, 3:01 AMColton Idle
08/04/2021, 3:02 AMval myValidations = remember { mutableStateListOf("") }
worksColton Idle
08/04/2021, 3:02 AMval myValidations = remember { mutableStateListOf(
Validations("8 chars", false), Validations("Special char", false)) }
just now and it compiles!
Time to test!Colton Idle
08/04/2021, 3:04 AMNathan Castlehow
08/04/2021, 3:05 AMNathan Castlehow
08/04/2021, 3:07 AMNathan Castlehow
08/04/2021, 3:08 AMColton Idle
08/04/2021, 3:16 AMColton Idle
08/04/2021, 4:09 AM