loadTrackBundle method
Implementation
@override
Future<TrackBundle> loadTrackBundle(String trackId) async {
final track = await getTrack(trackId);
if (track == null) throw StateError('Unknown fake route.');
final points = List<TrackPoint>.unmodifiable(_points[trackId] ?? const []);
final segments = <TrackSegmentWithPoints>[];
for (var number = 1; number <= track.segmentCount; number += 1) {
final id = '${track.id}-segment-$number';
final segmentPoints = points
.where((point) => point.segmentId == id)
.toList(growable: false);
segments.add(TrackSegmentWithPoints(
segment: TrackSegment(
id: id,
trackId: track.id,
segmentNumber: number,
status: track.status == TrackStatus.completed
? TrackSegmentStatus.completed
: number == track.segmentCount &&
track.status == TrackStatus.active
? TrackSegmentStatus.active
: TrackSegmentStatus.paused,
startedAt: segmentPoints.isEmpty
? track.startedAt
: segmentPoints.first.capturedAt,
endedAt: track.status == TrackStatus.completed ? track.endedAt : null,
distanceMeters: 0,
acceptedPointCount:
segmentPoints.where((point) => point.accepted).length,
),
points: List<TrackPoint>.unmodifiable(segmentPoints),
));
}
return TrackBundle(
track: track,
segments: segments,
);
}