我有一个观测主题,从科索沃母亲运动的观点模式得到更新,并受快速倡议清单的约束。 这里的<代码> 序号代码>是独一无二的。
struct MyView: View {
private let viewModel: MyViewModel = MyViewModel()
@ObservedObject private var state: ObservableViewModel<MyViewModel.State>
init() {
state = viewModel.observableState()
viewModel.onStateChange(callback: { state in
self.state.value = state
})
}
var body: some View {
NavigationStack {
List(state.value.items, id: .serial) { device in
Item(device: device)
}
}
}
}
extension MyViewModel {
func observableState() -> ObservableViewModel<MyViewModel.State> {
return (stateFlow.value_ as! MyViewModel.State).wrapAsObservable()
}
}
class ObservableViewModel<T>: ObservableObject {
@Published var value: T
init(value: T) {
self.value = value
}
}
我观察了我的看法模式的最新情况,没有问题,但清单项目没有把最新物品重新划归SOS。
这些是KMM观察模型数据类别,我使用StateFlow
,以获取最新信息。
data class State(
val items: List<Item> = arrayListOf(),
val name: String = ""
) : ViewState
data class Item(
val name: String = "",
val serial: String = ""
)
val state = _state.asStateFlow()
val stateFlow = state.stateIn(GlobalScope, SharingStarted.Eagerly, initialState)
fun onStateChange(callback: (State) -> Unit) {
CoroutineScope(Dispatchers.Main).launch {
stateFlow.collect {
callback(it)
}
}
}
It seems SwiftUI doesn t identify the changes to the objects and redraw relevant views. What is the best way to handle this?
不容置疑的是,它总是发生,而只是在我经常得到更新的时候。 在其他时候,它与往常一样,毫无问题地运作和更新了《国际调查》。 添加或删除新物品的,也处以罚款。