Refactor(ClickableText): Replace ClickableText with Text

This commit is contained in:
2024-09-26 18:44:59 +08:00
parent 04812cf56b
commit 2639d88492

View File

@@ -1,10 +1,11 @@
package top.fatweb.oxygen.toolbox.ui.component package top.fatweb.oxygen.toolbox.ui.component
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.foundation.text.ClickableText
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle import androidx.compose.ui.text.withStyle
@@ -14,7 +15,7 @@ import top.fatweb.oxygen.toolbox.ui.util.ResourcesUtils
fun ClickableText( fun ClickableText(
@StringRes text: Int, @StringRes text: Int,
@StringRes replaceText: Int, @StringRes replaceText: Int,
onClick: (Int) -> Unit onClick: () -> Unit
) { ) {
val context = LocalContext.current val context = LocalContext.current
val primaryColor = MaterialTheme.colorScheme.primary val primaryColor = MaterialTheme.colorScheme.primary
@@ -30,7 +31,10 @@ fun ClickableText(
clickablePart clickablePart
) )
append(mainText.substringBefore(clickablePart)) append(mainText.substringBefore(clickablePart))
pushStringAnnotation(tag = "Click", annotation = clickablePart) pushLink(LinkAnnotation.Clickable(
tag = "Click",
linkInteractionListener = { onClick() }
))
withStyle(style = SpanStyle(color = primaryColor)) { withStyle(style = SpanStyle(color = primaryColor)) {
append(clickablePart) append(clickablePart)
} }
@@ -38,5 +42,5 @@ fun ClickableText(
append(mainText.substringAfter(clickablePart)) append(mainText.substringAfter(clickablePart))
} }
ClickableText(text = annotatedString, onClick = onClick) Text(text = annotatedString)
} }