Flutter - запуск анимации из модели с областью действия - PullRequest
0 голосов
/ 17 ноября 2018

Мое приложение содержит пару страниц. В панели приложений у меня есть самодельный виджет с сохранением состояния и значком, который показывает количество новых сообщений. Когда я проведу пальцем, чтобы обновить данные, значок запустит небольшую анимацию, если значение значка будет изменено.

Проблема в том, что значение значка исходит из модели с областью видимости. Как запустить анимацию из класса модели Scoped. Я попытался позволить классу модели с областью видимости держать в руках animationController и функцию. Работает на первом и втором экране. Но когда я возвращаюсь на первую страницу снова и тяну, чтобы обновить. Это как анимация контроллера в плохом состоянии.

Код в модели объема:

Function _runNotificationAnimation;
set runNotificationAnimation(Function fun) => _runNotificationAnimation = fun;

void _setNotificationCount(int count) {
  _notificationCount = count;

  if (count > 0 && _runNotificationAnimation != null) {
    _runNotificationAnimation();
 }
 notifyListeners();
}

функция запуска анимации

runAnim() {
    setState(() {
      controller.reset();
      controller.forward(from: 0.0);
    });
  }

Ошибка от флаттера:

[VERBOSE-2: shell.cc (184)] Ошибка дротика: необработанное исключение: NoSuchMethodError: Метод 'stop' был вызван с нулевым значением. Получатель: ноль Пробный вызов: остановка (отменено: правда) 0 Object.noSuchMethod (dart: core / runtime / libobject_patch.dart: 50: 5) 1 AnimationController.stop (пакет: flutter / src / animation / animation_controller.dart: 650: 13) 2 AnimationController.value = (пакет: flutter / src / animation / animation_controller.dart: 349: 5) 3 AnimationController.reset (пакет: flutter / src / animation / animation_controller.dart: 370: 5) 4 NotificationIconState.runAnim (пакет: volvopenta / widgets / notificaton_icon.dart: 38: 16) 5 SettingsModel._setNotificationCount (пакет: volvopenta / scoped-models / settings-model.dart: 57: 7) 6 SettingsModel.updateAppData (пакет: volvopenta / scoped-models / settings-model.dart: 185: 5) 7 MyMachines.build ... (пакет: volvopenta / pages / fleet.dart: 83: 27) 8 <...>

...