我有一個帶有文本欄位和按鈕的可組合函式
private fun ButtonsColumn(
修改器。Modifier = Modifier,
//列舉類DataEntryInputState
dataEntryInputState。DataEntryInputState = DataEntryInputState.Default,
onClickParam: () -> Unit ?
){
// enum class ButtonType,改變按鈕的內容。
var buttonState by remember { mutableStateOf(ButtonType.Text) }
Column(modifier = modifier) {
DataEntryInputLarge(
...
//custom composable"Login",
enabled = textFieldState,
type = buttonState,
onClick = onClickParam
)
}
}
我想在onClick完成時更新buttonState,類似于:
onClickParam: () -> Boolean。
...
onClick = {
if(!onClickParam){
buttonState = DataEntryInputState.Default
}
}
這意味著,當lambda函式完成時,如果它是假的,就根據我已有的內容更新按鈕的內容。我不確定這是否可行,或者是否有其他方法可以做到這一點。
uj5u.com熱心網友回復:
只要為lambda接受一些東西,例如,這是在當前值的基礎上更新一個布林值
fun CustomComposable(
onClick: (Boolean) -> Boolean)
){
var myBoolean by mutableStateOf (false)
myBoolean = onClick(myBoolean)
}
現在,onClick引數可以像這樣實作:
{ receivedBoolean -> //You can also use 'it' keyword to access this
return !receivedBoolean //Just return the complimentary boolean
}
當像這樣實作時,你的Composable將一個布林值傳遞給onClick,它將回傳贈送的布林值,因此,當這個onClick完成時,Composable中myBoolean的值將被翻轉。這可以通過簡單地添加一個getter(在onClick的括號中添加一個值)和一個setter(通過回傳一個Boolean而不是Unit實作。這只是一個例子。按照你想要的方式來實作它。該方法將保持不變。
uj5u.com熱心網友回復:
var dataEntryState by remember { mutableStateOf(DataEntryInputState.Default) }
并呼叫ButtonsColumn從它的準繩中可組成,如
ButtonsColumn(modifier, dataEntryState) {
//在完成lamba后更新狀態。
dataEntryState = DataEntryInputState.Default
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311872.html
標籤:
