我有一个动态构建的复选框列表,每个复选框对应于模型中的成员变量:
Checkbox(
value: pointProtocolRecord.checkResult == 1,
onChanged: (value){
pointProtocolRecord.checkResult = value ? 1 : 0;
}
),
但是,调用notifyListeners()
实际更新复选框并不是一件容易的事,因为pointProtocolRecord
是嵌套在模型内部的一个对象:
ChecklistPointProtocolRecord pointProtocolRecord =
model
.activeChecklistProtocol
.controlPoints
.singleWhere((k) => k.checklistPointGuid == record.checklistPointGuid);
只需在notifyListeners()
处理程序中添加onChanged
即可:
Checkbox(
value: pointProtocolRecord.checkResult == 1,
onChanged: (value){
pointProtocolRecord.checkResult = value ? 1 : 0;
model.notifyListeners();
}
),
但是IntelliJ强调了通话内容,并给出了提示,提示
成员“ notifyListeners”只能在“ package:scoped_model / scoped_model.dart”子类的实例成员中使用
从模型外部调用notifyListeners()
是否存在危险?
我想我可以在模型中添加只调用notifyListeners()
的方法,但这是一个好的解决方案吗?是否有更好的方法可以从模型成员层次结构的深处更新模型侦听器?