This commit is contained in:
2024-08-24 21:59:16 +08:00
parent 6c888655f5
commit 367d1c9f3a
12 changed files with 150 additions and 64 deletions

View File

@@ -2,6 +2,7 @@ package com.aiosman.riderpro.ui.composables
import android.content.Context
import android.graphics.Bitmap
import androidx.annotation.DrawableRes
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@@ -46,10 +47,12 @@ fun rememberImageBitmap(imageUrl: String, imageLoader: ImageLoader): Bitmap? {
@Composable
fun CustomAsyncImage(
context: Context,
imageUrl: String,
imageUrl: String?,
contentDescription: String?,
modifier: Modifier = Modifier,
blurHash: String? = null,
@DrawableRes
placeholderRes: Int? = null,
contentScale: ContentScale = ContentScale.Crop
) {
val imageLoader = getImageLoader(context)
@@ -63,30 +66,35 @@ fun CustomAsyncImage(
}
}
var bitmap by remember(imageUrl) { mutableStateOf<Bitmap?>(null) }
LaunchedEffect(imageUrl) {
if (bitmap == null) {
val request = ImageRequest.Builder(context)
.data(imageUrl)
.crossfade(true)
.build()
val result = withContext(Dispatchers.IO) {
(imageLoader.execute(request) as? SuccessResult)?.drawable?.toBitmap()
}
bitmap = result
}
}
// var bitmap by remember(imageUrl) { mutableStateOf<Bitmap?>(null) }
//
// LaunchedEffect(imageUrl) {
// if (bitmap == null) {
// val request = ImageRequest.Builder(context)
// .data(imageUrl)
// .crossfade(3000)
// .build()
//
// val result = withContext(Dispatchers.IO) {
// (imageLoader.execute(request) as? SuccessResult)?.drawable?.toBitmap()
// }
// bitmap = result
// }
// }
AsyncImage(
model = bitmap ?: ImageRequest.Builder(context)
model = ImageRequest.Builder(context)
.data(imageUrl)
.crossfade(true)
.crossfade(200)
.apply {
if (placeholderRes != null) {
placeholder(placeholderRes)
return@apply
}
if (blurBitmap != null) {
placeholder(blurBitmap.toDrawable(context.resources))
}
}
.build(),
contentDescription = contentDescription,