stop method

TripSummary? stop()

Implementation

TripSummary? stop() {
  _subscription?.cancel();
  _subscription = null;
  final state = _state;
  _state = state == null
      ? null
      : TripState(
          tripId: state.tripId,
          createdAt: state.createdAt,
          startedAt: state.startedAt,
          startLocation: state.startLocation,
          lastLocation: state.lastLocation,
          distanceMeters: state.distanceMeters,
          idleSeconds: state.idleSeconds,
          maxSpeedKph: state.maxSpeedKph,
          started: state.started,
          ended: true,
        );
  if (state == null || !state.started) {
    return null;
  }
  final endedAt = DateTime.now().toUtc();
  final summary = state.toSummary(endedAt);
  if (summary != null) {
    _controller.add(TripEvent(
      type: TripEventType.tripEnd,
      tripId: state.tripId,
      timestamp: endedAt,
      location: state.lastLocation,
      summary: summary,
      isMoving: false,
    ));
  }
  _store?.clear();
  return summary;
}