UI-state моделируют sealed/immutable классами: Loading/Content/Error/Empty; экран мапит их в соответствующие composable.
Разбор
- Retry шлёт событие в VM.
- Пустой список ≠ ошибка сети.
- Snackbar для одноразовых сообщений, inline для устойчивых ошибок.
- Не смешивайте несколько конфликтующих оверлеев без приоритета.
Итог
Явная модель состояний экрана делает UI предсказуемым и тестируемым.