Sobes.tech
Back to questions
Junior — Middle
140

Можете ли вы рассказать, каким образом реализуется архитектурный паттерн MVVM в приложениях?

Answer from AI

sobes.tech AI

Архитектурный паттерн MVVM (Model-View-ViewModel) в приложениях разделяет логику на три компонента:

  • Model — отвечает за данные и бизнес-логику.
  • View — отображает интерфейс и взаимодействует с пользователем.
  • ViewModel — посредник между Model и View, содержит логику представления и состояние.

В Flutter MVVM реализуется следующим образом:

  1. Model — классы, которые описывают данные и методы для работы с ними (например, получение из API).

  2. ViewModel — класс, который содержит состояние и методы для управления данными, а также уведомляет View об изменениях (часто с помощью ChangeNotifier или потоков Stream).

  3. 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 хранит данные.