Load icons off main

pull/3390/head
Alex Baker 9 months ago
parent 1608aaeb54
commit 886e848172

@ -6,11 +6,14 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable 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.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.tasks.compose.pickers.label import org.tasks.compose.pickers.label
@Composable @Composable
@ -20,14 +23,19 @@ fun TasksIcon(
tint: Color = MaterialTheme.colorScheme.onSurface, tint: Color = MaterialTheme.colorScheme.onSurface,
) { ) {
Box(modifier = modifier.size(24.dp)) { Box(modifier = modifier.size(24.dp)) {
Icon( val loadedImageVector by produceState<ImageVector?>(initialValue = null, label) {
imageVector = remember (label) { value = withContext(Dispatchers.IO) {
imageVectorByName(label) imageVectorByName(label)
} ?: return@Box, }
}
loadedImageVector?.let { vector ->
Icon(
imageVector = vector,
contentDescription = label, contentDescription = label,
tint = tint, tint = tint,
) )
} }
}
} }
fun imageVectorByName(label: String?): ImageVector? = label?.let { fun imageVectorByName(label: String?): ImageVector? = label?.let {

Loading…
Cancel
Save