debugFillProperties method

  1. @override
void debugFillProperties (DiagnosticPropertiesBuilder properties, { String prefix: '' })
override

Adds all properties prefixing property names with the optional prefix.

Implementation

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties, { String prefix = '' }) {
  super.debugFillProperties(properties);
  if (debugLabel != null)
    properties.add(MessageProperty('${prefix}debugLabel', debugLabel));
  final List<DiagnosticsNode> styles = <DiagnosticsNode>[];
  styles.add(DiagnosticsProperty<Color>('${prefix}color', color, defaultValue: null));
  styles.add(StringProperty('${prefix}family', fontFamily, defaultValue: null, quoted: false));
  styles.add(DoubleProperty('${prefix}size', fontSize, defaultValue: null));
  String weightDescription;
  if (fontWeight != null) {
    switch (fontWeight) {
      case FontWeight.w100:
        weightDescription = '100';
        break;
      case FontWeight.w200:
        weightDescription = '200';
        break;
      case FontWeight.w300:
        weightDescription = '300';
        break;
      case FontWeight.w400:
        weightDescription = '400';
        break;
      case FontWeight.w500:
        weightDescription = '500';
        break;
      case FontWeight.w600:
        weightDescription = '600';
        break;
      case FontWeight.w700:
        weightDescription = '700';
        break;
      case FontWeight.w800:
        weightDescription = '800';
        break;
      case FontWeight.w900:
        weightDescription = '900';
        break;
    }
  }
  // TODO(jacobr): switch this to use enumProperty which will either cause the
  // weight description to change to w600 from 600 or require existing
  // enumProperty to handle this special case.
  styles.add(DiagnosticsProperty<FontWeight>(
    '${prefix}weight',
    fontWeight,
    description: weightDescription,
    defaultValue: null,
  ));
  styles.add(EnumProperty<FontStyle>('${prefix}style', fontStyle, defaultValue: null));
  styles.add(DoubleProperty('${prefix}letterSpacing', letterSpacing, defaultValue: null));
  styles.add(DoubleProperty('${prefix}wordSpacing', wordSpacing, defaultValue: null));
  styles.add(EnumProperty<TextBaseline>('${prefix}baseline', textBaseline, defaultValue: null));
  styles.add(DoubleProperty('${prefix}height', height, unit: 'x', defaultValue: null));
  styles.add(DiagnosticsProperty<Locale>('${prefix}locale', locale, defaultValue: null));
  styles.add(DiagnosticsProperty<Paint>('${prefix}foreground', foreground, defaultValue: null));
  styles.add(DiagnosticsProperty<Paint>('${prefix}background', background, defaultValue: null));
  if (decoration != null || decorationColor != null || decorationStyle != null) {
    final List<String> decorationDescription = <String>[];
    if (decorationStyle != null)
      decorationDescription.add(describeEnum(decorationStyle));

    // Hide decorationColor from the default text view as it is shown in the
    // terse decoration summary as well.
    styles.add(DiagnosticsProperty<Color>('${prefix}decorationColor', decorationColor, defaultValue: null, level: DiagnosticLevel.fine));

    if (decorationColor != null)
      decorationDescription.add('$decorationColor');

    // Intentionally collide with the property 'decoration' added below.
    // Tools that show hidden properties could choose the first property
    // matching the name to disambiguate.
    styles.add(DiagnosticsProperty<TextDecoration>('${prefix}decoration', decoration, defaultValue: null, level: DiagnosticLevel.hidden));
    if (decoration != null)
      decorationDescription.add('$decoration');
    assert(decorationDescription.isNotEmpty);
    styles.add(MessageProperty('${prefix}decoration', decorationDescription.join(' ')));
  }

  final bool styleSpecified = styles.any((DiagnosticsNode n) => !n.isFiltered(DiagnosticLevel.info));
  properties.add(DiagnosticsProperty<bool>('${prefix}inherit', inherit, level: (!styleSpecified && inherit) ? DiagnosticLevel.fine : DiagnosticLevel.info));
  styles.forEach(properties.add);

  if (!styleSpecified)
    properties.add(FlagProperty('inherit', value: inherit, ifTrue: '$prefix<all styles inherited>', ifFalse: '$prefix<no style specified>'));
}