使用Flutter作用域模型时,从模型内部通知侦听器

时间:2019-02-22 10:43:48

标签: mvvm model dart flutter

我有一个动态构建的复选框列表,每个复选框对应于模型中的成员变量:

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()的方法,但这是一个好的解决方案吗?是否有更好的方法可以从模型成员层次结构的深处更新模型侦听器?

0 个答案:

没有答案