draw method

void draw(
  1. Canvas canvas,
  2. Size size, {
  3. required BackgroundSnapshot background,
  4. required Offset cameraOffset,
  5. required double gridStrokeWidth,
})

Implementation

void draw(
  Canvas canvas,
  Size size, {
  required BackgroundSnapshot background,
  required Offset cameraOffset,
  required double gridStrokeWidth,
}) {
  _drawBackground(canvas, size, background.color);

  final safeOffset = sanitizeFiniteOffset(cameraOffset);
  final safeGridStrokeWidth = clampNonNegativeFinite(gridStrokeWidth);
  final grid = background.grid;
  final enabled = _isGridDrawable(
    grid,
    size: size,
    cameraOffset: Offset.zero,
  );
  final cellSize = enabled ? grid.cellSize : 0.0;
  final key = _StaticLayerKeyV2(
    size: size,
    gridEnabled: enabled,
    gridCellSize: cellSize,
    gridColor: grid.color,
    gridStrokeWidth: safeGridStrokeWidth,
  );

  if (_gridPicture == null || _key != key) {
    _disposeGridPictureIfNeeded();
    _key = key;
    _gridPicture = _recordGridPicture(size, grid, safeGridStrokeWidth);
    _debugBuildCount += 1;
  }

  if (!_key!.gridEnabled) {
    return;
  }
  final shift = _gridShiftForCameraOffset(safeOffset, _key!.gridCellSize);
  canvas.save();
  canvas.clipRect(Offset.zero & size);
  canvas.translate(shift.dx, shift.dy);
  canvas.drawPicture(_gridPicture!);
  canvas.restore();
}