Как в библиотеке Coil android получить изображение svg для jetpack compose
Хочу получать изображения из интернета при помощи библиотеки coil, прочитал нужную документацию, но изображение не загружалось, и я узнал, что для корректной работы с svg изображениями требуется дополнительно подключить конвертер, но в документации всё сделано под xml и как это сделать на jetpack compose неизвестно. прошу помочь. Вот код:
import android.app.Application
import coil.ImageLoader
import coil.decode.SvgDecoder
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import ru.den.daggerhilt.service.WeatherApi
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object MineModule {
@Provides
@Singleton
fun getBaseUrl(): String = "https://api.weather.yandex.ru/v2/"
@Provides
@Singleton
fun getInterceptor(): HttpLoggingInterceptor {
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
return interceptor
}
@Provides
@Singleton
fun provideImageLoader(app: Application): ImageLoader =
ImageLoader.Builder(app)
.crossfade(true)
.components {
add(SvgDecoder.Factory())
}
.build()
@Provides
@Singleton
fun getClient(interceptor: HttpLoggingInterceptor): OkHttpClient {
val client = OkHttpClient.Builder()
.addInterceptor(interceptor)
.build()
return client
}
@Provides
@Singleton
fun getRetrofit(BASE_URL: String, client: OkHttpClient): Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
@Provides
@Singleton
fun getService(retrofit: Retrofit): WeatherApi = retrofit.create(WeatherApi::class.java)
}
и:
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Composable
fun Home(
viewModel: HomeViewModel = hiltViewModel()
) {
Column(modifier = Modifier.fillMaxWidth()) {
Card(
modifier = Modifier
.fillMaxWidth()
.padding(5.dp),
colors = CardDefaults.cardColors(
containerColor = BlueDen
)
) {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier
.fillMaxWidth()
.padding(5.dp)
) {
Text(text = "ден", color = Color.White)
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data("https://yastatic.net/weather/i/icons/funky/dark/ovc.svg")
.crossfade(true)
.build(),
placeholder = painterResource(id = R.drawable.potato1),
contentDescription = "image",
modifier = Modifier.size(50.dp)
)
}
Text(text = viewModel.text, fontSize = 50.sp, color = Color.White)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
IconButton(onClick = { viewModel.getWeather() }) {
Icon(
Icons.Default.Refresh,
contentDescription = "refresh",
tint = Color.White
)
}
IconButton(onClick = { /*TODO*/ }) {
Icon(
Icons.Default.Search,
contentDescription = "search",
tint = Color.White
)
}
}
}
}
}
}