Back to questions
Junior — Middle
140
Можете ли вы рассказать, каким образом реализуется архитектурный паттерн MVVM в приложениях?
Answer from AI
sobes.tech AI
Архитектурный паттерн MVVM (Model-View-ViewModel) в приложениях разделяет логику на три компонента:
- Model — отвечает за данные и бизнес-логику.
- View — отображает интерфейс и взаимодействует с пользователем.
- ViewModel — посредник между Model и View, содержит логику представления и состояние.
В Flutter MVVM реализуется следующим образом:
-
Model — классы, которые описывают данные и методы для работы с ними (например, получение из API).
-
ViewModel — класс, который содержит состояние и методы для управления данными, а также уведомляет View об изменениях (часто с помощью
ChangeNotifierили потоковStream). -
View — виджеты Flutter, которые подписываются на изменения ViewModel и обновляются при изменении состояния.
Пример простого ViewModel с использованием ChangeNotifier:
class CounterViewModel extends ChangeNotifier {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
}
В виджете:
class CounterView extends StatelessWidget {
final CounterViewModel viewModel;
CounterView(this.viewModel);
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => viewModel,
child: Consumer<CounterViewModel>(
builder: (context, vm, child) => Column(
children: [
Text('Count: \\${vm.count}'),
ElevatedButton(
onPressed: vm.increment,
child: Text('Increment'),
),
],
),
),
);
}
}
Таким образом, ViewModel управляет состоянием и логикой, View отображает UI и реагирует на изменения, а Model хранит данные.