data classSuccess(val successMessage:String):UiState()
data classError(val error:Throwable?):UiState()
}
字符串 让我们来理解这部分代码:
object Loading:UiState():声明这个对象,因为我们在这个阶段不需要知道其他任何东西。 数据类Success(瓦尔successMessage:String):UiState():声明为数据类,因为我们在获取Success状态时需要消息。 data class Error(瓦尔error:Throwable?):声明为data class,因为我们在获取Error状态时需要Throwable。
1条答案
按热度按时间zmeyuzjn1#
Sealed classes允许我们以更灵活的方式表示层次结构。它也更可读,用于更好的状态管理。Sealed classes的子类可以是任何类型,如:数据类,对象类,任何常规类,甚至另一个sealed classes。
下面是我们如何使用Kotlin在Android中定义密封类:
字符串
让我们来理解这部分代码:
object Loading:UiState():声明这个对象,因为我们在这个阶段不需要知道其他任何东西。
数据类Success(瓦尔successMessage:String):UiState():声明为数据类,因为我们在获取Success状态时需要消息。
data class Error(瓦尔error:Throwable?):声明为data class,因为我们在获取Error状态时需要Throwable。
注意我们是如何使用object Loading:UiState()的。我们使用了与“Loading”对象的返回类型相同的密封类名称。这意味着,“Loading”对象属于“UiState”密封类。
对于成功和错误状态也是如此。
然后我们可以像下面这样使用这个密封类:
型
在前面提到的代码块中,我们将UiState密封类作为参数传递给ExcluveUiStates()方法,然后通过使用when检查应用的当前状态,然后我们将相应地处理状态。
在这个例子中,我只是在控制台中打印结果。
密封类,最好使用RxJava在Android中使用Model-View-Intent模式。
通过使用它们,我们现在可以观察状态变化。
每当应用程序有新的状态时,此veUiStates()方法将给予我们仅该特定状态。
为了保持这个特定示例的简单性,我从main()**调用这个方法。请参见下面的代码:
型
这将在控制台中打印以下内容:
型