merge method
- TextStyle? other
Returns a new text style that is a combination of this style and the given
other style.
If the given other text style has its TextStyle.inherit set to true,
its null properties are replaced with the non-null properties of this text
style. The other style inherits the properties of this style. Another
way to think of it is that the "missing" properties of the other style
are filled by the properties of this style.
If the given other text style has its TextStyle.inherit set to false,
returns the given other style unchanged. The other style does not
inherit properties of this style.
If the given text style is null, returns this text style.
One of color or foreground must be null, and if this or other has
foreground specified it will be given preference over any color parameter.
Similarly, one of backgroundColor or background must be null, and if
this or other has background specified it will be given preference
over any backgroundColor parameter.
Implementation
TextStyle merge(TextStyle? other) {
if (other == null) {
return this;
}
if (!other.inherit) {
return other;
}
String? mergedDebugLabel;
assert(() {
if (other.debugLabel != null || debugLabel != null) {
mergedDebugLabel =
'(${debugLabel ?? _kDefaultDebugLabel}).merge(${other.debugLabel ?? _kDefaultDebugLabel})';
}
return true;
}());
return copyWith(
color: other.color,
backgroundColor: other.backgroundColor,
fontSize: other.fontSize,
fontWeight: other.fontWeight,
fontStyle: other.fontStyle,
letterSpacing: other.letterSpacing,
wordSpacing: other.wordSpacing,
textBaseline: other.textBaseline,
height: other.height,
leadingDistribution: other.leadingDistribution,
locale: other.locale,
foreground: other.foreground,
background: other.background,
shadows: other.shadows,
fontFeatures: other.fontFeatures,
fontVariations: other.fontVariations,
decoration: other.decoration,
decorationColor: other.decorationColor,
decorationStyle: other.decorationStyle,
decorationThickness: other.decorationThickness,
debugLabel: mergedDebugLabel,
fontFamily: other._fontFamily,
fontFamilyFallback: other._fontFamilyFallback,
package: other._package,
overflow: other.overflow,
);
}