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
}