PolylineUpdates.update constructor

PolylineUpdates.update(
  1. Set<Polyline> previous,
  2. Set<Polyline> current
)

Implementation

PolylineUpdates.update(Set<Polyline> previous, Set<Polyline> current) {
  final Map<PolylineId, Polyline> oldPolylines = polylineToMap(previous);
  final Map<PolylineId, Polyline> currPolylines = polylineToMap(current);

  final Set<PolylineId> oldIds = oldPolylines.keys.toSet();
  final Set<PolylineId> currIds = currPolylines.keys.toSet();

  final Set<PolylineId> _toDelete = oldIds.difference(currIds);

  final Set<Polyline> _toInsert = Set<Polyline>.from(
      currIds.difference(oldIds).map((id) => currPolylines[id]).toSet());

  final Set<Polyline> _toUpdate = Set<Polyline>.from(currIds
      .intersection(oldIds)
      .map((id) => currPolylines[id])
      .where((x) => isChanged(x!, oldPolylines))
      .toSet());

  insertSet = _toInsert;
  deleteSet = _toDelete;
  updateSet = _toUpdate;
}