diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt index 8435ab254..a793dae79 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt @@ -6,11 +6,14 @@ import androidx.compose.material.icons.Icons import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember +import androidx.compose.runtime.getValue +import androidx.compose.runtime.produceState import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import org.tasks.compose.pickers.label @Composable @@ -20,13 +23,18 @@ fun TasksIcon( tint: Color = MaterialTheme.colorScheme.onSurface, ) { Box(modifier = modifier.size(24.dp)) { - Icon( - imageVector = remember (label) { + val loadedImageVector by produceState(initialValue = null, label) { + value = withContext(Dispatchers.IO) { imageVectorByName(label) - } ?: return@Box, - contentDescription = label, - tint = tint, - ) + } + } + loadedImageVector?.let { vector -> + Icon( + imageVector = vector, + contentDescription = label, + tint = tint, + ) + } } }