Jetbrains Compose에서 Darwin OS에 뷰를 그릴 때 remote url로부터 image를 load하는 것을 해보겠습니다.
먼저 각 모듈에 Ktor Http Client를 설정해줍니다.
//commonMain
expect val httpClient: HttpClient
//androidMain
actual val httpClient: HttpClient = HttpClient(OkHttp)
//iosMain
actual val httpClient: HttpClient = HttpClient(Darwin)
그런 다음 image url로 부터 byteArray를 받은 다음 이미지로 변환해줍니다.
아래는 예시 코드입니다.
@Composable
fun ImageContent() {
val bitmap by produceState<ImageBitmap?>(null) {
val image = httpClient.use {
it.get("https://picsum.photos/200/300")
.body<ByteArray>()
}
value = org.jetbrains.skia.Image.makeFromEncoded(image).toComposeImageBitmap()
}
bitmap?.let {
Image(
bitmap = it, contentDescription = null
)
}
}