Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Composable
- fun ListScreen(viewModel: ListViewModel, navController: NavController) {
- val viewState = viewModel.mState.observeAsState()
- when (val state = viewState.value) {
- is ListViewState.Init -> {
- Column() {
- repeat(state.list.size) {
- TextField(value = state.list[it],
- onValueChange = { str ->
- viewModel.obtainEvent(ListEvent.NameChange(it,
- str))
- })
- }
- }
- }
- }
- }
- @HiltViewModel
- class ListViewModel @Inject constructor() : ViewModel(), EventHandler<ListEvent> {
- private val m_state: MutableLiveData<ListViewState> =
- MutableLiveData(ListViewState.Init())
- val mState: LiveData<ListViewState> = m_state
- override fun obtainEvent(event: ListEvent) {
- when (val state = m_state.value) {
- is ListViewState.Init -> {
- reduce(state, event)
- }
- }
- }
- fun reduce(initState: ListViewState.Init, event: ListEvent) {
- when (event) {
- is ListEvent.NameChange -> {
- initState.list[event.index] = event.text
- m_state.postValue(initState)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement