KotlinLeaner
04/06/2023, 3:58 PMnull
checks before setting into the UI component. Is there any better way to avoid null
checks in composable function? For example data is coming from the server and it may be null
. I am giving an example
data class TestItem(
val link: String? = null,
val result: Result? = null
)
More code in a thread.KotlinLeaner
04/06/2023, 3:58 PMdata class Result(
val name: String? = null,
val iconUrl: String? = null,
)
KotlinLeaner
04/06/2023, 3:58 PMTestItem
list to composable function we have to check that it's not nullKotlinLeaner
04/06/2023, 3:59 PMtestItem.result?.name?.let {
Text(
text = it,
maxLines = 1,
)
}
Can we avoid this null check?Casey Brooks
04/06/2023, 4:03 PMKotlinLeaner
04/06/2023, 4:14 PMRepository pattern to make the API call and clean up the response
I got the point to make API call
but not clean up
process. If I take above example, TestItem
and Result
. I have to make a duplicate class and it doesn't have null values? Something like this belowKotlinLeaner
04/06/2023, 4:14 PMdata class TestItem(
val link: String,
val result: Result,
)
KotlinLeaner
04/06/2023, 4:14 PMdata class Result(
val name: String,
val iconUrl: String,
)
KotlinLeaner
04/06/2023, 4:15 PMCasey Brooks
04/06/2023, 4:21 PM@Serializable
data class TestItemResponse(
val link: String? = null,
val result: String? = null, // could be 00 for success, 01 for an error
)
enum class TestItemResult {
Success, Error, Unknown
}
data class TestItem(
val link: String,
val result: TestItemResult,
)
class Api {
fun getTestItem(): TestItemResponse {
TODO()
}
}
class Repository(val api: Api) {
fun getTestItem(): TestItem {
val apiResponse = api.getTestItem()
return TestItem(
link= apiResponse.link ?: "",
result = when(apiResponse.result) {
"00" -> TestItemResult.Success
"01" -> TestItemResult.Error
else -> TestItemResult.Unknown
}
)
}
}
Casey Brooks
04/06/2023, 4:25 PMKotlinLeaner
04/06/2023, 4:34 PMAlbert Chang
04/06/2023, 5:00 PMisNotEmpty()
check.