У меня есть два виджета, которые должны общаться друг с другом. У обоих подключена 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