Issue
I’m creating theme for my app.
I’m confusing these 2 methods (apply, copyWith) of TextStyle.
What should be used?
There’re also 2 methods with the same names in TextTheme.
I understand them, but can not get the idea in TextStyle.
Logic of these 2 in TextStyle is different than in TextTheme
Thank you.
Solution
When looking at the docs it shows that apply
uses default values for some parameters if you don’t specify them.
TextStyle apply(
{Color? color,
Color? backgroundColor,
TextDecoration? decoration,
Color? decorationColor,
TextDecorationStyle? decorationStyle,
double decorationThicknessFactor = 1.0,
double decorationThicknessDelta = 0.0,
String? fontFamily,
List? fontFamilyFallback,
double fontSizeFactor = 1.0,
double fontSizeDelta = 0.0,
int fontWeightDelta = 0,
FontStyle? fontStyle,
double letterSpacingFactor = 1.0,
double letterSpacingDelta = 0.0,
double wordSpacingFactor = 1.0,
double wordSpacingDelta = 0.0,
double heightFactor = 1.0,
double heightDelta = 0.0,
TextBaseline? textBaseline,
TextLeadingDistribution? leadingDistribution,
Locale? locale,
List? shadows,
List? fontFeatures}
)
https://api.flutter.dev/flutter/painting/TextStyle/apply.html
copywith
does not use default values and uses (copies) the values already defined in the original TextStyle object.
TextStyle copyWith(
{bool? inherit,
Color? color,
Color? backgroundColor,
String? fontFamily,
List? fontFamilyFallback,
double? fontSize,
FontWeight? fontWeight,
FontStyle? fontStyle,
double? letterSpacing,
double? wordSpacing,
TextBaseline? textBaseline,
double? height,
TextLeadingDistribution? leadingDistribution,
Locale? locale,
Paint? foreground,
Paint? background,
List? shadows,
List? fontFeatures,
TextDecoration? decoration,
Color? decorationColor,
TextDecorationStyle? decorationStyle,
double? decorationThickness,
String? debugLabel}
)
https://api.flutter.dev/flutter/painting/TextStyle/copyWith.html
Edit:
It also seems that they have different parameters, for example apply
doesn’t have fontSize
and fontWeight
as a parameter.
Answered By – Er1
Answer Checked By – Pedro (FlutterFixes Volunteer)