Sobes.tech
Junior — Middle

Povedzte nám o vašich skúsenostiach s implementáciou architektonického vzoru Model-View-Intent (MVI).

sobes.tech AI

Odpoveď od AI

Model-View-Intent (MVI) — je architektonický vzor, ktorý pomáha spravovať stav používateľského rozhrania prostredníctvom toku úmyslov (intents) používateľa.

Zo skúseností s implementáciou MVI na Androide:

  • Intent — akcie alebo udalosti používateľa, ktoré sa odosielajú do systému.
  • Model — obchodná logika a stav, ktoré spracúvajú intents a tvoria nový stav.
  • View — zobrazuje stav a generuje intents.

Napríklad, pri stlačení tlačidla View odošle Intent, Model ho spracuje a aktualizuje Stav, ktorý View zobrazí.

Toto umožňuje, aby bolo UI predvídateľné a ľahko testovateľné.

Príklad zjednodušeného kódu:

sealed class Intent {
    object LoadData : Intent()
    data class Submit(val text: String) : Intent()
}

data class ViewState(val isLoading: Boolean, val data: String?)

class Model {
    private val state = MutableStateFlow(ViewState(false, null))

    fun process(intent: Intent) {
        when (intent) {
            is Intent.LoadData -> loadData()
            is Intent.Submit -> submitData(intent.text)
        }
    }

    private fun loadData() {
        state.value = ViewState(true, null)
        // načítanie dát
        state.value = ViewState(false, "Dáta načítané")
    }

    private fun submitData(text: String) {
        // spracovanie odoslania
    }

    fun getState(): StateFlow<ViewState> = state
}