Android75
02/19/2023, 8:28 AMvar toolState = viewModel.toolState.collectAsState().value
data class ToolPageState(
var mainFunctionList : MutableList<ToolFunction> = mutableListOf<ToolFunction>()
)
data class ToolFunction(var num :Int, var alpha: Float = 1f)
in screen:
ToolsButtons(modifier = Modifier, pageState.mainFunctionList){ function ->
}
@Composable
fun BoxScope.ToolsButtons(
modifier: Modifier = Modifier,
functionList: MutableList<ToothFunction>,
onSelectToolFeature: (function: ToolFunction) -> Unit
) {
Row(
modifier = modifier
.fillMaxWidth()
.background(GreyLight).
padding(start = 30.dp, end = 30.dp)
.height(100.dp)
.align(
Alignment.BottomCenter
),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
functionList.forEach{
ToolButton(it) { function ->
onSelectToolFeature(function)
}
}
}
}
fun ToolButton(toolFunc: ToolFunction, onSelectButton: (toolFunc: ToolFunction) -> Unit) {
Image(
modifier = Modifier.alpha(toolFunc.alpha)
fun onSelectToothFeature(function: ToolFunction) {
mainFunctionList[2].alpha = 0.4f
updateButtonFunctionList()
}
private fun updateButtonFunctionList(){
uiState.value = uiState.value.copy(
mainFunctionList = mainFunctionList
)
}
@Composable
fun BoxScope.ToolsButtons(
modifier: Modifier = Modifier,
functionList: MutableList<ToolFunction>,
onSelectToolFeature: (function: ToothFunction) -> Unit
) {
LazyRow(modifier = modifier.fillMaxWidth().height(100.dp).background(GreyLight).
padding(start = 30.dp, end = 30.dp) .align(
Alignment.BottomCenter
),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically) {
items(functionList) { item ->
ToolButton(item) { function ->
onSelectToolFeature(function)
}
}
}
var functionList by mutableStateOf(mainFunctionList)
e screen gets the list from viewModel directly