флаттер обмена данными между двумя моделями представления - PullRequest
0 голосов
/ 19 октября 2019

У меня есть два виджета, которые должны общаться друг с другом. У обоих подключена ViewModel.

Виджет календаря:

BaseWidget<CalendarViewModel>(
    model: CalendarViewModel(),
    builder: (context, calendarModel, child) => ...
        Consumer<CalendarViewModel>(
            builder: (context, model, child) {
                model.generateEvents(mainModel.activities);

                return calendar(...);
            },
        ),
class CalendarViewModel extends ChangeNotifier {

}

Виджет данных:

BaseWidget<MonthDataViewModel>(
    model: MonthDataViewModel(
        visibleMonth: mainModel.displayedMonth,
    ),
    builder: (context, monthDataModel, child) => 
        Text('${DateFormat('MMMM').format(monthDataModel.visibleMonth)}',),

    ),
),
class MonthDataViewModel extends ChangeNotifier {
  DateTime _visibleMonth;

  MonthDataViewModel({
    @required DateTime visibleMonth,
  }) {
    _visibleMonth = visibleMonth;
  }

  DateTime get visibleMonth => _visibleMonth;
  set visibleMonth(DateTime month) => {
        _visibleMonth = month,
        notifyListeners(),
      };
}

Итак, теперь есть функциявнутри виджета календаря, который срабатывает, когда видимый месяц изменился. Затем я хочу изменить текст внутри MonthDataWidget на основе названия месяца. Проблема здесь в том, что я не знаю, как соединить две модели представления (или я обмениваюсь данными через сами виджеты?), Не нарушая шаблон

Я также использую шаблон провайдера, если это могло бы помочь здесь, но я на самом деле не делаю Viewmodel

...