jaqxues
02/22/2021, 4:26 PMmutableStateListOf<StateFlow<StateFulData>>()
or similar?Orhan Tozan
02/22/2021, 4:55 PMmutableStateListOf<T>
in favour of mutableStateOf<List<T>
for the same reason I would avoid val list: MutableList<T>
in favour of var list: List<T>
.
Then, everytime a single element updates its state, you need to create a new list with the updated element and do currentStateList = newList
jaqxues
02/22/2021, 4:58 PMOrhan Tozan
02/22/2021, 5:01 PMjaqxues
02/22/2021, 5:06 PMOrhan Tozan
02/22/2021, 5:12 PMjaqxues
02/22/2021, 5:15 PMOrhan Tozan
02/22/2021, 5:18 PMjaqxues
02/22/2021, 5:19 PMOrhan Tozan
02/22/2021, 5:22 PMjaqxues
02/22/2021, 5:29 PMOrhan Tozan
02/22/2021, 5:32 PMjaqxues
02/22/2021, 7:06 PMsealed class StatefulData {
class Stage1(val msg: String): StatefulData()
class Stage2(val t: Throwable): StatefulData()
}
@Composable
fun StateExample() {
val list = mutableStateListOf<StateFlow<StatefulData>>()
list.forEach {
var (extended, setExtended) = remember { mutableStateOf(false) }
Card(Modifier.toggleable(extended, onValueChange = setExtended)) {
Column {
// Collecting as state: when the StateFlow for a single element updates, a single element is recomposed,
// without losing the associated extended state
when (val el = it.collectAsState().value) {
is StatefulData.Stage1 -> {
Text(el.msg, color = Color.Green)
}
is StatefulData.Stage2 -> {
Text(el.t.message ?: "No Error Message", color = Color.Red)
}
}
AnimatedVisibility(visible = extended) {
Text("Showing information in more detail")
}
}
}
}
}
Orhan Tozan
02/22/2021, 7:51 PMjaqxues
02/22/2021, 7:52 PMOrhan Tozan
02/22/2021, 7:52 PMjaqxues
02/22/2021, 7:53 PMextended
states to elements in some way, that is also terribleOrhan Tozan
02/22/2021, 7:54 PMjaqxues
02/22/2021, 7:55 PMOrhan Tozan
02/22/2021, 7:56 PMjaqxues
02/22/2021, 7:56 PMOrhan Tozan
02/22/2021, 8:02 PMjaqxues
02/22/2021, 8:07 PMOrhan Tozan
02/22/2021, 8:07 PM