Skip to content

Instantly share code, notes, and snippets.

@enyciaa
Created December 5, 2021 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save enyciaa/2b6fe0536e8f66a2d7fb712d3cfdb3c5 to your computer and use it in GitHub Desktop.
Save enyciaa/2b6fe0536e8f66a2d7fb712d3cfdb3c5 to your computer and use it in GitHub Desktop.
screen-template-2
class MyFabScreenViewModel(
private val navigator: Navigator,
) : MotherViewModel<MyFabScreenViewModel.ViewState, MyFabScreenViewModel.UiAction>() {
override fun onAttach() {
super.onAttach()
flowOf(ScreenState.Loaded)
.onEach { delay(5000) }
.flowOn(Dispatchers.Default)
.onEach { emit(lastViewState.copy(screenState = it)) }
.launchIn(coroutineScope)
}
override fun onAction(action: UiAction) {
when (action) {
UiAction.NextClicked -> navigator.goToSecondScreen()
}
}
override fun defaultViewState(): ViewState {
return ViewState(
screenToolbarViewState = ScreenToolbarViewState("My First Screen"),
screenCallToActionViewState = ScreenCallToActionViewState("Next"),
screenState = ScreenState.Loading,
)
}
data class ViewState(
val screenToolbarViewState: ScreenToolbarViewState,
val screenCallToActionViewState: ScreenCallToActionViewState,
val screenState: ScreenState,
) : MotherViewModel.ViewState
sealed class UiAction : MotherViewModel.UiAction {
object NextClicked : UiAction()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment