Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme
Loading, Success ve Error kullanıcı arayüzü durumlarını temsil etmek için sealed sınıfları uygulayın.
Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Kullanıcı Arayüzü Durumu Sorunu
Klasik Boole Cehennemi
// Fragile: isLoading=true AND hasError=true is invalid
var isLoading = false
var hasError = false
var data: List<Item>? = null
// 8 combinations, most of which are invalid!Mühürlü Durum: Yalnızca Geçerli Durumlar
sealed class UiState<out T>
object Loading : UiState<Nothing>()
data class Success<T>(val data: T) : UiState<T>()
data class Error(val message: String, val retryable: Boolean = true) : UiState<Nothing>()
object Empty : UiState<Nothing>()Duruma Göre Görüntüleme
fun render(state: UiState<List<Item>>) = when (state) {
Loading -> showProgressBar()
is Success -> showItems(state.data)
is Error -> showError(state.message, state.retryable)
Empty -> showEmptyView()
}ViewModel'ın Durumları Yayması
class ItemViewModel : ViewModel() {
private val _state = MutableStateFlow<UiState<List<Item>>>(Loading)
val state: StateFlow<UiState<List<Item>>> = _state
fun loadItems() = viewModelScope.launch {
_state.value = Loading
_state.value = try {
Success(repository.getItems())
} catch (e: Exception) {
Error(e.message ?: "Unknown error")
}
}
}İçerikle Birlikte Durumları Birleştirme
fun <T> loading(): UiState<T> = Loading
fun <T> success(data: T): UiState<T> = Success(data)
fun <T> error(msg: String): UiState<T> = Error(msg)Sayfalandırma Durumu Örneği
sealed class PageState
object Idle : PageState()
object FirstLoad : PageState()
data class Content(val items: List<Item>, val hasMore: Boolean) : PageState()
data class LoadingMore(val items: List<Item>) : PageState()
data class Error(val items: List<Item>?, val msg: String) : PageState()Durumu Dönüştürme
fun <T, R> UiState<T>.mapData(transform: (T) -> R): UiState<R> = when (this) {
is Success -> Success(transform(data))
is Error -> this
Loading -> Loading
Empty -> Empty
}Mühürlü Durumlarla Test Etme
@Test
fun testLoadingState() {
viewModel.loadItems()
assertEquals(Loading, viewModel.state.value)
}
@Test
fun testSuccessState() {
viewModel.setData(listOf(item))
assert(viewModel.state.value is Success)
}Birleşik Durum ile Birden Çok Akışın Karşılaştırılması
// Fragile: two flows must stay in sync
val loading = MutableStateFlow(false)
val error = MutableStateFlow<String?>(null)
// Clean: one sealed state
val state = MutableStateFlow<UiState<List<Item>>>(Loading)Durumlara Üst Veri Ekleme
data class Error(
val message: String,
val code: Int = 0,
val retryable: Boolean = true,
val timestamp: Long = System.currentTimeMillis()
) : UiState<Nothing>()Kısa Kontrol
Özet
Sıkça Sorulan Sorular
“Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme” dersi ücretsiz mi?
Evet — “Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme” dersinde ne öğreneceğim?
Loading, Success ve Error kullanıcı arayüzü durumlarını temsil etmek için sealed sınıfları uygulayın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- sealed class ve sealed interface: Hangisi Ne Zaman Kullanılır
- Sealed Hiyerarşilerle Eksiksiz when
- Sealed Sınıflarla Kullanıcı Arayüzü Durumlarını Modelleme
- Sealed Hiyerarşileri İç İçe Yerleştirme ve Birleştirme