[新增] 让Compose的封面组件支持更多参数

This commit is contained in:
HapeLee committed 2025-11-30 03:18:33 +08:00
1 parent 6f5606b9e1
commit de9e9b21c2
1 file changed
+24 -8
@@ -32,13 +32,16 @@ private val DefaultCoverModifier = Modifier
@Composable @Composable
fun Cover( fun Cover(
path: String?, path: Any?,
modifier: Modifier = DefaultCoverModifier, modifier: Modifier = DefaultCoverModifier,
badgeContent: (@Composable RowScope.() -> Unit)? = null badgeContent: (@Composable RowScope.() -> Unit)? = null,
loadOnlyWifi: Boolean = false,
sourceOrigin: String? = null,
onLoadFinish: (() -> Unit)? = null
) { ) {
Box( val context = LocalContext.current
modifier = modifier
) { Box(modifier = modifier) {
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
@@ -47,12 +50,25 @@ fun Cover(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
if (path == null) { if (path == null) {
Icon(Icons.Default.Book, null, tint = MaterialTheme.colorScheme.surfaceContainerHighest, modifier = Modifier.size(24.dp)) Icon(
Icons.Default.Book,
contentDescription = null,
tint = MaterialTheme.colorScheme.surfaceContainerHighest,
modifier = Modifier.size(24.dp)
)
} else { } else {
AsyncImage( AsyncImage(
model = ImageRequest.Builder(LocalContext.current) model = ImageRequest.Builder(context)
.data(path) .data(path) // 可以是 URL、File、Uri、DrawableRes
.crossfade(true) .crossfade(true)
.apply {
if (sourceOrigin != null) setParameter("sourceOrigin", sourceOrigin)
if (loadOnlyWifi) setParameter("loadOnlyWifi", true)
}
.listener(
onSuccess = { _, _ -> onLoadFinish?.invoke() },
onError = { _, _ -> onLoadFinish?.invoke() }
)
.build(), .build(),
contentDescription = null, contentDescription = null,
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,