[英]How to change the content inside a Scaffold that exists inside drawer in Jetpack Compose?
[英]Jetpack Compose - change variables inside Compsable
我想知道如何通過方法更改 Composable 內部的變量。 當然我可以做類似的事情:
var test: String by remember { mutableStateOf("hello") }
並且可以像我想要的那樣改變它,就像(雖然這是一個愚蠢的例子)
[stuff...].pointerInput(Unit) {
detectDragGestures(...)
{ change, dragAmount ->
test=dragamount.toString()
}
}
但是我將如何用一些復雜的方法來改變變量,例如
[stuff...].pointerInput(Unit) {
detectDragGestures(...)
{ change, dragAmount ->
changeText(dragAmount)
}
}
我只能使用可組合之外的方法將其分配給值,也就是
test=getMyNewTest(dragAmount)
但是我怎樣才能在可組合物中更改我的“字段”,以便我可以直接在我的方法中修改“測試”?
如果該方法可以看到一個可變變量(即共享一個詞法范圍),它可以更改它。 為了changeText
能夠更改test
,它必須在 scope 中有test
或接收可變的test
引用作為參數。 Compose 不會改變這一點。
在 compose 之外對這個問題的任何回答(例如 class 范圍、模塊范圍、全局范圍、閉包捕獲、引用傳遞等)也適用於 compose。
例如,您可以將 function 定義為可組合 function 的本地,如下:
@Composable
fun Example() {
var test by remember { mutableStateOf("hello") }
fun changeText(amount: Float) {
test = amount.toString()
}
...
[stuff...].pointerInput(Unit) {
detectDragGestures(...)
{ change, dragAmount ->
changeText(dragAmount)
}
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.