compose-imageloader
日付:2023/07/04
URL:https://github.com/qdsfdhvh/compose-imageloader
調査者:Mori Atsushi
カテゴリ:compose multiplatform
一言で表すと
compose multiplatformでネットワーク画像を表示するためのやつ
概要
こんな感じで使う
code:kotlin
@Composable
fun Content() {
CompositionLocalProvider(
LocalImageLoader provides generateImageLoader(),
) {
val url = "https://....."
val painter = rememberImageActionPainter(url)
Image(painter, null)
}
}
Actionとは?
StartやProgresss, Result等のイベントを表現する
https://github.com/qdsfdhvh/compose-imageloader/blob/master/image-loader/src/commonMain/kotlin/com/seiko/imageloader/model/ImageAction.kt
このactionに合わせてpainterを切り替えている
https://github.com/qdsfdhvh/compose-imageloader/blob/1f11f2a733d018f097278e38b0029feaa83aedc6/image-loader/src/commonMain/kotlin/com/seiko/imageloader/Remember.kt#L69-L92
Mori Atsushi.icon Painterを再生成するのは広範囲でrecomposeが起きるので、Painter内で切り替えるほうが良い気もする?
通信にはsquare/okioを使っている
Androidはandroid.graphics.ImageDecoderを使ってdecodeしている
https://github.com/qdsfdhvh/compose-imageloader/blob/master/image-loader/src/androidMain/kotlin/com/seiko/imageloader/component/decoder/ImageDecoderDecoder.kt
iOSやDesktopではskiaで画像を表示している
https://github.com/qdsfdhvh/compose-imageloader/blob/master/image-loader/src/skiaMain/kotlin/com/seiko/imageloader/component/decoder/SkiaImageDecoder.kt
気になるポイント
Mori Atsushi.icon もう少しコメントを残してくれると嬉しい…(自戒)
メモ
コメント
Go.icon意外ととっつきやすそう