1. override
void debugFillDescription(List<String> description)

Accumulates a list of strings describing the current node's fields, one field per string. Subclasses should override this to have their information included in toStringDeep.

Source

@override
void debugFillDescription(List<String> description) {
  super.debugFillDescription(description);
  bool inReleaseMode = true;
  assert(() {
    inReleaseMode = false;
    if (debugSymmetricPaintCount + debugAsymmetricPaintCount == 0) {
      description.add('usefulness ratio: no metrics collected yet (never painted)');
    } else {
      double percentage = 100.0 * debugAsymmetricPaintCount / (debugSymmetricPaintCount + debugAsymmetricPaintCount);
      String diagnosis;
      if (debugSymmetricPaintCount + debugAsymmetricPaintCount < 5) {
        diagnosis = 'insufficient data to draw conclusion (less than five repaints)';
      } else if (percentage > 90.0) {
        diagnosis = 'this is an outstandingly useful repaint boundary and should definitely be kept';
      } else if (percentage > 50.0) {
        diagnosis = 'this is a useful repaint boundary and should be kept';
      } else if (percentage > 30.0) {
        diagnosis = 'this repaint boundary is probably useful, but maybe it would be more useful in tandem with adding more repaint boundaries elsewhere';
      } else if (percentage > 10.0) {
        diagnosis = 'this repaint boundary does sometimes show value, though currently not that often';
      } else if (debugAsymmetricPaintCount == 0) {
        diagnosis = 'this repaint boundary is astoundingly ineffectual and should be removed';
      } else {
        diagnosis = 'this repaint boundary is not very effective and should probably be removed';
      }
      description.add('metrics: ${percentage.toStringAsFixed(1)}% useful ($debugSymmetricPaintCount bad vs $debugAsymmetricPaintCount good)');
      description.add('diagnosis: $diagnosis');
    }
    return true;
  });
  if (inReleaseMode)
    description.add('(run in checked mode to collect repaint boundary statistics)');
}