ImageLoader httpClient
Closed this issue · 2 comments
mahramane commented
Hi
val painter = rememberImagePainter(
url = "https://example.com/image",
imageLoader = generateImageLoader()
)
Image(
modifier = Modifier.size(70.dp, 70.dp).clip(CircleShape),
painter = painter,
contentDescription = null
)
@Composable
fun generateImageLoader(
tokenManager: TokenManager = koinInject()
): ImageLoader {
return ImageLoader {
components {
setupDefaultComponents(
httpClient = {
HttpClient{
defaultRequest {
bearerAuth(tokenManager.getAuthorization)
}
}
}
)
}
}
}
Hi
when i set image loader for rememberImagePainter, i got the following error:
io.ktor.client.HttpClient -- REQUEST https://example.com/image failed with exception: java.util.concurrent.CancellationException: The coroutine scope left the composition
how can i fix that?
qdsfdhvh commented
You need to remember { generateImageLoader() }
otherwise it will cause the Imageloader
to rebuild on Recompose
.
But the bettter way is use CompositionLocalProvider
at the outer level of the compose.
setContent {
CompositionLocalProvider(
LocalImageLoader provides remember { generateImageLoader() }
) {
// App()
}
}
qdsfdhvh commented
I'm close this issue, you can reopen it if still have problem.