mirror of
https://github.com/BetterAndroid/FlexiUI.git
synced 2025-09-08 19:44:25 +08:00
feat: add LocalIconTint in Icon
This commit is contained in:
@@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.Box
|
|||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.ReadOnlyComposable
|
import androidx.compose.runtime.ReadOnlyComposable
|
||||||
|
import androidx.compose.runtime.compositionLocalOf
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.paint
|
import androidx.compose.ui.draw.paint
|
||||||
import androidx.compose.ui.geometry.Size
|
import androidx.compose.ui.geometry.Size
|
||||||
@@ -48,7 +49,7 @@ fun Icon(
|
|||||||
imageVector: ImageVector,
|
imageVector: ImageVector,
|
||||||
contentDescription: String? = null,
|
contentDescription: String? = null,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
tint: Color = Color.Unspecified
|
tint: Color = LocalIconTint.current
|
||||||
) {
|
) {
|
||||||
val painter = rememberVectorPainter(imageVector)
|
val painter = rememberVectorPainter(imageVector)
|
||||||
Icon(painter, contentDescription, modifier, tint)
|
Icon(painter, contentDescription, modifier, tint)
|
||||||
@@ -59,7 +60,7 @@ fun Icon(
|
|||||||
painter: Painter,
|
painter: Painter,
|
||||||
contentDescription: String? = null,
|
contentDescription: String? = null,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
tint: Color = Color.Unspecified
|
tint: Color = LocalIconTint.current
|
||||||
) {
|
) {
|
||||||
// TODO: b/149735981 semantics for content description
|
// TODO: b/149735981 semantics for content description
|
||||||
val colorFilter = if (tint == Color.Unspecified) null else ColorFilter.tint(tint)
|
val colorFilter = if (tint == Color.Unspecified) null else ColorFilter.tint(tint)
|
||||||
@@ -81,6 +82,8 @@ fun Icon(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val LocalIconTint = compositionLocalOf { Color.Unspecified }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun Modifier.defaultSizeFor(painter: Painter) = then(
|
private fun Modifier.defaultSizeFor(painter: Painter) = then(
|
||||||
if (painter.intrinsicSize == Size.Unspecified || painter.intrinsicSize.isInfinite())
|
if (painter.intrinsicSize == Size.Unspecified || painter.intrinsicSize.isInfinite())
|
||||||
|
Reference in New Issue
Block a user