片段/活动的 uiState 类的大小

问题描述 投票:0回答:1

问题

我的理解是否正确,根据谷歌的应用程序架构指南,片段/活动的

uiState
通常仅由一个类描述(见下图)?

对于我这个编程初学者来说,

NewsUiState
看起来像是数据表示(
NewItemUiState
)和屏幕相关事物(例如
isSignedIn
)之间的组合。

但是在复杂的 UI 上,

uiState
类必须很容易就有 100 个属性长,或者我错过了什么?

android mvvm android-viewmodel android-architecture-components
1个回答
0
投票

您可以创建多个状态

data class

示例用例

sealed class UiState {
    data class Success(val data: Data) : UiState()
    data class Error(val error: Throwable) : UiState()
    object Loading : UiState()
}

如何处理

fun handleUiState(uiState: UiState) {
    when (uiState) {
        is UiState.Success -> displayData(uiState.data)
        is UiState.Error -> displayError(uiState.error)
        UiState.Loading -> displayLoadingIndicator()
    }
}

其他样品

sealed class UiState {
    data class Success(val data: Data) : UiState()
    data class Error(val error: Throwable) : UiState()
    object Loading : UiState()
    data class Validation(val errors: Map<String, String>) : UiState()
    data class Completed(val message: String) : UiState()
    object Init : UiState()
    object Empty : UiState()
}

这里重要的是能够分解与相关屏幕相关的状态。您可以为屏幕上的每个组件编写自己的 uiStates。这是的做法。 它可以与

Sealed class
结合使用。您可以使用单个
stateflow
sharedflow
流式传输数据。

© www.soinside.com 2019 - 2024. All rights reserved.