mirror of https://github.com/tasks/tasks
Fix icon null pointer exceptions
parent
6700ce5aa1
commit
64ad4ca33a
@ -1,14 +1,40 @@
|
|||||||
package org.tasks.compose.components
|
package org.tasks.compose.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material.icons.Icons
|
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.ui.Modifier
|
||||||
|
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 org.tasks.compose.pickers.label
|
import org.tasks.compose.pickers.label
|
||||||
|
|
||||||
fun imageVectorByName(label: String): ImageVector? =
|
@Composable
|
||||||
|
fun TasksIcon(
|
||||||
|
label: String?,
|
||||||
|
tint: Color = MaterialTheme.colorScheme.onSurface,
|
||||||
|
) {
|
||||||
|
Box(modifier = Modifier.size(24.dp)) {
|
||||||
|
Icon(
|
||||||
|
imageVector = remember (label) {
|
||||||
|
imageVectorByName(label)
|
||||||
|
} ?: return@Box,
|
||||||
|
contentDescription = label,
|
||||||
|
tint = tint,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun imageVectorByName(label: String?): ImageVector? = label?.let {
|
||||||
try {
|
try {
|
||||||
val cl = Class.forName("androidx.compose.material.icons.outlined.${label.label}Kt")
|
val cl = Class.forName("androidx.compose.material.icons.outlined.${it.label}Kt")
|
||||||
val method = cl.declaredMethods.first()
|
val method = cl.declaredMethods.first()
|
||||||
method.invoke(null, Icons.Outlined) as ImageVector
|
method.invoke(null, Icons.Outlined) as ImageVector
|
||||||
} catch (_: Throwable) {
|
} catch (_: Throwable) {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue