calculateInsets method

  1. @override
EdgeInsets calculateInsets(
  1. Size availableSize
)
override

Calculates the insets required by this renderer.

Used to reserve space for axes, legends, etc.

Implementation

@override
EdgeInsets calculateInsets(Size availableSize) {
  if (!_config.visible || items.isEmpty) return EdgeInsets.zero;

  // Compute layouts to get size
  final dummyChartArea = Rect.fromLTWH(
    50,
    50,
    availableSize.width - 100,
    availableSize.height - 100,
  );
  final layouts = _computeLayouts(availableSize, dummyChartArea);

  if (layouts.isEmpty) return EdgeInsets.zero;

  var maxY = 0.0;
  var maxX = 0.0;
  for (final layout in layouts) {
    maxY = maxY > layout.bounds.bottom ? maxY : layout.bounds.bottom;
    maxX = maxX > layout.bounds.right ? maxX : layout.bounds.right;
  }

  final contentHeight = maxY + _config.padding.vertical;
  final contentWidth = maxX + _config.padding.horizontal;

  switch (_config.position) {
    case ChartPosition.top:
      return EdgeInsets.only(top: contentHeight);
    case ChartPosition.bottom:
      return EdgeInsets.only(bottom: contentHeight);
    case ChartPosition.left:
      return EdgeInsets.only(left: contentWidth);
    case ChartPosition.right:
      return EdgeInsets.only(right: contentWidth);
    case ChartPosition.center:
      return EdgeInsets.zero;
  }
}