[新增] 让Compose的封面组件支持更多参数
This commit is contained in:
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,
|
||||||
|
|||||||
Reference in new issue
Block a user