Lukasz Kalnik
07/12/2024, 11:20 AMTextField
where the user can input text, which is bound to a property. However, I also want to observe a KMP ViewModel's StateFlow
which can update the text in the TextField
. I'm using SKIE. How can I achieve it?Tadeas Kriz
07/12/2024, 1:41 PMstruct ExampleView: View {
let viewModel = ExampleViewModel()
var body: some View {
Observing(viewModel.textFieldInput) { input in
TextField("Prompt", text: Binding(get: { input }, set: { viewModel.textFieldInput.value = $0 })
}
}
}
Lukasz Kalnik
07/12/2024, 1:42 PMTadeas Kriz
07/12/2024, 1:43 PMLukasz Kalnik
07/12/2024, 1:44 PMstruct MainView: View {
private let viewModel = ViewModelProvider.shared.getMainViewModel()
@State private var transactionId: String = ""
var body: some View {
TextField("Transaction ID:", text: $transactionId).collect(flow: viewModel.uiState) { uiState in
transactionId = uiState.transactionId ?? ""
}
}
}
Tadeas Kriz
07/12/2024, 1:45 PMBinding
so that it updates the viewModel.uiState
Lukasz Kalnik
07/12/2024, 1:46 PMTadeas Kriz
07/12/2024, 1:47 PMstruct MainView: View {
private let viewModel = ViewModelProvider.shared.getMainViewModel()
@State private var transactionId: String = ""
var body: some View {
TextField("Transaction ID:", text: Binding(get: { transactionId }, set: { viewModel.setTransactionID($0) }).collect(flow: viewModel.uiState) { uiState in
transactionId = uiState.transactionId ?? ""
}
}
}
Lukasz Kalnik
07/12/2024, 1:48 PM