Skip to content

Commit c82793b

Browse files
committed
use CMP allDrawableResources to dynamically get flag resource
1 parent f40b9a4 commit c82793b

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

common/src/commonMain/kotlin/dev/johnoreilly/common/ui/CountryListUI.kt

+13-19
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ import androidx.compose.runtime.*
1616
import androidx.compose.ui.Alignment
1717
import androidx.compose.ui.Modifier
1818
import androidx.compose.ui.unit.dp
19+
import bikeshare.common.generated.resources.Res
20+
import bikeshare.common.generated.resources.allDrawableResources
1921
import dev.johnoreilly.common.screens.CountryListScreen
2022
import dev.johnoreilly.common.viewmodel.Country
21-
import org.jetbrains.compose.resources.DrawableResource
22-
import org.jetbrains.compose.resources.InternalResourceApi
23+
import org.jetbrains.compose.resources.ExperimentalResourceApi
2324
import org.jetbrains.compose.resources.painterResource
2425

2526

@@ -37,6 +38,7 @@ fun CountryListUi(state: CountryListScreen.State, modifier: Modifier = Modifier)
3738
}
3839

3940

41+
@OptIn(ExperimentalResourceApi::class)
4042
@Composable
4143
fun CountryView(country: Country, countrySelected: (country: Country) -> Unit) {
4244
Row(
@@ -46,24 +48,16 @@ fun CountryView(country: Country, countrySelected: (country: Country) -> Unit) {
4648
.padding(start = 16.dp, top = 8.dp, end = 16.dp, bottom = 8.dp),
4749
verticalAlignment = Alignment.CenterVertically
4850
) {
49-
val flagDrawable = getDrawable("flag_${country.code.lowercase()}")
50-
Image(
51-
painterResource(flagDrawable),
52-
modifier = Modifier.size(32.dp),
53-
contentDescription = country.displayName
54-
)
51+
val flagDrawable = Res.allDrawableResources["flag_${country.code.lowercase()}"]
52+
if (flagDrawable != null) {
53+
Image(
54+
painterResource(flagDrawable),
55+
modifier = Modifier.size(32.dp),
56+
contentDescription = country.displayName
57+
)
58+
}
5559

5660
Spacer(modifier = Modifier.size(16.dp))
5761
Text(text = country.displayName, style = MaterialTheme.typography.bodyLarge)
5862
}
59-
}
60-
61-
@OptIn(InternalResourceApi::class)
62-
private fun getDrawable(id: String): DrawableResource =
63-
DrawableResource(
64-
"drawable:$id",
65-
setOf(
66-
org.jetbrains.compose.resources.ResourceItem(setOf(),
67-
"composeResources/bikeshare.common.generated.resources/drawable/$id.xml", -1, -1),
68-
)
69-
)
63+
}

0 commit comments

Comments
 (0)