버튼을 누르면 서버통신을 통해 변환된 이미지를 drawable 폴더 내에 있는 default 이미지로 변경하고 싶습니다. mutableStateof state를 사용하여 이미지 값을 관리하고 있는데, 특이한 에러는 없지만 앱을 실행하고 버튼 클릭시 뷰에 이미지 변경이 일어나지 않아서 질문합니다.
어떻게 코드를 고치면 되나요?
코드:
val responseImage = MyApplication.prefs.getData("image", "")
val decodedBytes = Base64.decode(responseImage, Base64.DEFAULT)
val decodedImage = BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.size)
val decodeFile: File? = File.createTempFile("temp", null, LocalContext.current.cacheDir)
val outputStream = FileOutputStream(decodeFile)
decodedImage?.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
outputStream.close()
val defaultProfileImageBitmap = BitmapFactory.decodeResource(LocalContext.current.resources, R.drawable.defaultprofile)
val imageUri = rememberSaveable {
mutableStateOf(decodeFile?.toUri())
}
var painter = rememberImagePainter(
data = imageUri.value,
builder = {
if (imageUri.value == null) {
placeholder(R.drawable.defaultprofile)
}
}
)
val onClickToDefaultImage = rememberImagePainter(data = defaultProfileImageBitmap)
Button(
onClick = {
painter = onClickToDefaultImage
openDialog = false
},
shape = RoundedCornerShape(10.dp),
modifier = Modifier
.width(250.dp)
.height(45.dp)
.background(Color.White))
{
Text(text = "기본 이미지로 변경")
}
Image(
painter = painter,
contentDescription = "profileImage",
modifier = Modifier
.size(150.dp)
.padding(8.dp)
.clickable {
openDialog = !openDialog
},
contentScale = ContentScale.Crop
)