【发布时间】:2022-12-05 01:25:22
【问题描述】:
我想让用户将图像添加到 LazyColumn 中的每个项目(卡片)。但似乎图像在重组时被删除了。我该如何解决?
@Composable
fun PhotoUpload(
) {
val imageUri = remember {
mutableStateOf<Uri?>(null)
}
val context = LocalContext.current
val bitmap = remember {
mutableStateOf<Bitmap?>(null)
}
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.GetContent()
) { uri: Uri? ->
imageUri.value = uri
}
imageUri.value?.let {
LaunchedEffect(Unit) {
if (Build.VERSION.SDK_INT < 28) {
bitmap.value = MediaStore.Images
.Media.getBitmap(context.contentResolver, it)
} else {
val source = ImageDecoder
.createSource(context.contentResolver, it)
bitmap.value = ImageDecoder.decodeBitmap(source)
}
}
}
bitmap.value?.let { btm ->
Image(
bitmap = btm.asImageBitmap(),
contentDescription = null,
modifier = Modifier.size(400.dp)
)
}
Button(onClick = {
launcher.launch("image/*")
}) {
Icon(Icons.Filled.PhotoAlbum, "")
}
}
图片被删除(他们不会回来,这是一个循环 gif)
PS:对于 LazyColumn,我确实使用键。我也尝试使用 Coil 的 AsyncImage,但它有同样的问题
【问题讨论】:
标签: android kotlin android-jetpack-compose lazycolumn