Уведомление слушателей из глубины модели при использовании модели с флаттером - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть динамически построенный список флажков, каждый из которых соответствует переменной-члену в моей модели:

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' может использоваться только внутри членов экземпляра подклассов 'пакета: scoped_model / scoped_model.dart'

Есть ли какая-либо опасность, вызывающая notifyListeners() снаружи Модель?

Полагаю, я мог бы добавить в модель метод, который вызывает только notifyListeners(), но разве это хорошее решение?Существуют ли более эффективные способы обновления слушателей моделей из глубины иерархии членов моделей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...