颤振在两个视图模型之间交换数据



我有两个应该相互通信的小部件。两者都连接了一个视图模型。

日历小部件:

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中的文本。这里的问题是,我不知道如何在不破坏模式的情况下连接两个视图模型(或者我是否通过小部件本身交换数据?

如果这在这里有所帮助,我也使用提供程序模式,但我实际上没有注入任何视图模型

我建议使用 get_it 将视图模型引用为单例,以免每次构建视图时都实例化视图模型。这样,视图模型可以相互引用和更新,然后通知各自的视图。

最新更新