debugFillProperties method
- 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>[
ColorProperty('${prefix}color', color, defaultValue: null),
ColorProperty('${prefix}backgroundColor', backgroundColor, defaultValue: null),
StringProperty('${prefix}family', fontFamily, defaultValue: null, quoted: false),
IterableProperty<String>('${prefix}familyFallback', fontFamilyFallback, defaultValue: null),
DoubleProperty('${prefix}size', fontSize, defaultValue: null),
];
String? weightDescription;
if (fontWeight != null) {
weightDescription = '${fontWeight!.index + 1}00';
}
// 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(
EnumProperty<TextLeadingDistribution>(
'${prefix}leadingDistribution',
leadingDistribution,
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 ||
decorationThickness != null) {
final List<String> decorationDescription = <String>[];
if (decorationStyle != null) {
decorationDescription.add(decorationStyle!.name);
}
// Hide decorationColor from the default text view as it is shown in the
// terse decoration summary as well.
styles.add(
ColorProperty(
'${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(' ')));
styles.add(
DoubleProperty(
'${prefix}decorationThickness',
decorationThickness,
unit: 'x',
defaultValue: null,
),
);
}
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>',
),
);
}
styles.add(EnumProperty<TextOverflow>('${prefix}overflow', overflow, defaultValue: null));
}