StrutStyle.fromTextStyle constructor Null safety

StrutStyle.fromTextStyle(
  1. TextStyle textStyle,
  2. {String? fontFamily,
  3. List<String>? fontFamilyFallback,
  4. double? fontSize,
  5. double? height,
  6. TextLeadingDistribution? leadingDistribution,
  7. double? leading,
  8. FontWeight? fontWeight,
  9. FontStyle? fontStyle,
  10. bool? forceStrutHeight,
  11. String? debugLabel,
  12. String? package}
)

Builds a StrutStyle that contains values of the equivalent properties in the provided textStyle.

The textStyle parameter must not be null.

The named parameters override the textStyle's argument's properties. Since TextStyle does not contain leading or forceStrutHeight, these values will take on default values (null and false) unless otherwise specified.

If provided, fontSize must be positive and non-zero, leading must be zero or positive.

When textStyle has a package and a new package is also specified, the entire font family fallback list should be redefined since the textStyle's package data is inherited by being prepended onto the font family names. If fontFamilyFallback is meant to be empty, pass an empty list instead of null. This prevents the previous package name from being prepended twice.

Implementation

StrutStyle.fromTextStyle(
  TextStyle textStyle, {
  String? fontFamily,
  List<String>? fontFamilyFallback,
  double? fontSize,
  double? height,
  TextLeadingDistribution? leadingDistribution,
  this.leading, // TextStyle does not have an equivalent (yet).
  FontWeight? fontWeight,
  FontStyle? fontStyle,
  this.forceStrutHeight,
  String? debugLabel,
  String? package,
}) : assert(textStyle != null),
     assert(fontSize == null || fontSize > 0),
     assert(leading == null || leading >= 0),
     assert(package == null || fontFamily != null || fontFamilyFallback != null),
     fontFamily = fontFamily != null ? (package == null ? fontFamily : 'packages/$package/$fontFamily') : textStyle.fontFamily,
     _fontFamilyFallback = fontFamilyFallback ?? textStyle.fontFamilyFallback,
     height = height ?? textStyle.height,
     leadingDistribution = leadingDistribution ?? textStyle.leadingDistribution,
     fontSize = fontSize ?? textStyle.fontSize,
     fontWeight = fontWeight ?? textStyle.fontWeight,
     fontStyle = fontStyle ?? textStyle.fontStyle,
     debugLabel = debugLabel ?? textStyle.debugLabel,
     _package = package;