我被告知,MutableState就像Kotlin中的MutableLiveData,而MutableState適合Compose,MutableLiveDataenter code here適合XML布局。
在代碼A中,我需要將資料賦值給bb.value,,但為什么要直接賦值給aa?
代碼A
private var aa by mutableStateOf(-1)
private var bb= MutableLiveData<Int> (-1)
fun onEditDone() {
aa = 2
bb.value = 2 ?
}
uj5u.com熱心網友回復:
這是因為Kotlin的委托功能,你使用by關鍵字來委托值。
對于remember和mutableState的簡單實作,當你構建類似的東西時,顯示它是如何作業的,如下所示
// Delegation Functions for setting and getting value
operator fun <T> State<T>. getValue(thisObj: Any? , property: KProperty<*>): T = value
operator fun <T>/span> MutableState<T>/span>。 setValue(thisObj: Any? , property: KProperty<*>, value: T) {
this.value = value
}
/*
* *狀態
*/
interface State<out T> {
val value。T
}
interface MutableState<T> 。State<T> {
override var value: T
}
class MutableStateImpl<T>(value: T) : MutableState<T> {
override var value: T = value
}
fun <T> mutableStateOf(value。T)。MutableState<T> = MutableStateImpl(value)
/*
*記住
*/
inline fun <T> remember(計算。() -> T): T {
return calculation()
}
而且你可以把它當作
使用fun main() {
val isSelected。MutableState<Boolean> = remember { mutableStateOf(true) }
isSelected.value = false
var selected by remember { mutableStateOf(false) }
selected = false }
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311868.html
標籤:
上一篇:當按下后退按鈕時,安卓按鈕被禁用
