feat: add LocalIconTint in Icon

This commit is contained in:
2023-11-19 00:17:05 +08:00
parent fcaaf7a885
commit 07b7f53dfd

View File

@@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.paint
import androidx.compose.ui.geometry.Size
@@ -48,7 +49,7 @@ fun Icon(
imageVector: ImageVector,
contentDescription: String? = null,
modifier: Modifier = Modifier,
tint: Color = Color.Unspecified
tint: Color = LocalIconTint.current
) {
val painter = rememberVectorPainter(imageVector)
Icon(painter, contentDescription, modifier, tint)
@@ -59,7 +60,7 @@ fun Icon(
painter: Painter,
contentDescription: String? = null,
modifier: Modifier = Modifier,
tint: Color = Color.Unspecified
tint: Color = LocalIconTint.current
) {
// TODO: b/149735981 semantics for content description
val colorFilter = if (tint == Color.Unspecified) null else ColorFilter.tint(tint)
@@ -81,6 +82,8 @@ fun Icon(
)
}
internal val LocalIconTint = compositionLocalOf { Color.Unspecified }
@Composable
private fun Modifier.defaultSizeFor(painter: Painter) = then(
if (painter.intrinsicSize == Size.Unspecified || painter.intrinsicSize.isInfinite())