Create shared ViewModel
's for shared business logic using our ViewModel
base class.
- Uses Jetpack
ViewModel
on Android for lifecycled - Exposes a
CoroutineScope
to 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