progress property

Duration get progress

Implementation

Duration get progress => _progress ?? startTime;
set progress (Duration newProgress)

Implementation

set progress(Duration newProgress) {
  Duration oldProgress = _progress ?? startTime;
  _internalSetValue(newProgress);
  _lastElapsedDuration = null;
  if (progress == oldProgress) {
    return;
  }
  if (_status == DanmuStatus.idle) {
    _status = _idleBeforeStatus;
  }
  bool isFullShown = true;
  for (var entry in danmuItems) {
    entry.dTime = progress - entry.model.startTime;
    entry.position = entry.simulation
        .offset((progress - entry.model.startTime).inMicrosecondsPerSecond);
    Offset? position = entry.simulation.isDone(entry.position!, 0);
    if (position == null) {
      _tempList.add(entry);
    } else if (!entry.isPause) {
      entry.position = position;
      if (!entry.simulation.isFullShown) {
        isFullShown = false;
      }
    }
  }
  _isFullShown = isFullShown;
  for (var element in _tempList) {
    danmuItems.remove(element);
    adapter.removeItem(element);
  }
  _tempList.clear();
  if (danmuItems.isEmpty && _status == DanmuStatus.playing) {
    _idleBeforeStatus = _status;
    _status = DanmuStatus.idle;
    _isFullShown = true;
  }
  _checkStatusChanged();
  notifyListeners();
}