layout method
      
  
void
layout(
    
- Context context,
- BoxConstraints constraints, {
- bool parentUsesSize = false,
override
    First widget pass to calculate the children layout and bounding box
Implementation
@override
void layout(Context context, BoxConstraints constraints,
    {bool parentUsesSize = false}) {
  super.layout(context, constraints, parentUsesSize: parentUsesSize);
  final datasets = Chart.of(context).datasets;
  final size = constraints.biggest;
  final _gridBox = PdfRect(0, 0, size.x, size.y);
  var _total = 0.0;
  for (final dataset in datasets) {
    assert(dataset is PieDataSet, 'Use only PieDataset with a PieGrid');
    if (dataset is PieDataSet) {
      _total += dataset.value;
    }
  }
  final unit = pi / _total * 2;
  var angle = startAngle;
  for (final dataset in datasets) {
    if (dataset is PieDataSet) {
      dataset.angleStart = angle;
      angle += dataset.value * unit;
      dataset.angleEnd = angle;
    }
  }
  _radius = min(_gridBox.width / 2, _gridBox.height / 2);
  var reduce = false;
  do {
    reduce = false;
    for (final dataset in datasets) {
      if (dataset is PieDataSet) {
        dataset.layout(context, BoxConstraints.tight(_gridBox.size));
        assert(dataset.box != null);
        if (_radius > 20 &&
            (dataset.box!.width > _gridBox.width ||
                dataset.box!.height > _gridBox.height)) {
          _radius -= 10;
          reduce = true;
          break;
        }
      }
    }
  } while (reduce);
}