2

我正在为我的应用程序创建主题。

我混淆了TextStyle的这两种方法(apply,copyWith)。应该使用什么?

TextTheme 中还有 2 个同名的方法。我理解他们,但无法理解 TextStyle 中的想法。

TextStyle 中这 2 个的逻辑与 TextTheme 中的不同

谢谢你。

4

2 回答 2

2

查看文档时,它显示apply如果您未指定某些参数,则使用默认值。

TextStyle apply({Color?color,Color?backgroundColor,TextDecoration?decoration,Color?decorationColor,TextDecorationStyle?decorationStyle,双decorationThicknessFactor = 1.0,双decorationThicknessDelta = 0.0,String?fontFamily,List?fontFamilyFallback,双fontSizeFactor = 1.0,双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不使用默认值并使用(复制)已在原始 TextStyle 对象中定义的值。

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?高度、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

编辑:它们似乎也有不同的参数,例如apply没有fontSizefontWeight作为参数。

于 2021-08-18T07:49:34.200 回答
1

apply() 创建文本样式的副本,替换其中的所有指定属性。

copyWith() 创建文本样式的副本,但它只用新值替换给定值

于 2021-08-20T03:33:13.133 回答