Create shared ViewModel's for shared business logic using our ViewModel base class.
- Uses Jetpack
ViewModelon Android for lifecycled - Exposes a
CoroutineScopeto be used in your methods
This package has 1 component to it:
A ViewModel class you can base your view models on.
Add Dependency
commonMain {
dependencies {
// ...
api("com.doublesymmetry:multiplatform-viewmodel:0.0.1")
}
}Expose it to iOS native side
ios {
binaries {
framework {
baseName = "shared"
export(Deps.viewmodel) // required to expose the class to iOS
}
}
}class ExampleViewModel: ViewModel() {
private val _viewState = MutableStateFlow(UIViewState())
val viewState: StateFlow<UIViewState> = _viewState
fun onLaunched() {
scope.launch {
// fetch some data
_viewState.emit(newState)
}
}
}When using it on iOS you'll want to make sure that you call clear() on your ViewModel on deinit to properly kill the CoroutineScope