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();
}