copyWith method

TextTheme copyWith(
  1. {TextStyle? displayLarge,
  2. TextStyle? displayMedium,
  3. TextStyle? displaySmall,
  4. TextStyle? headlineLarge,
  5. TextStyle? headlineMedium,
  6. TextStyle? headlineSmall,
  7. TextStyle? titleLarge,
  8. TextStyle? titleMedium,
  9. TextStyle? titleSmall,
  10. TextStyle? bodyLarge,
  11. TextStyle? bodyMedium,
  12. TextStyle? bodySmall,
  13. TextStyle? labelLarge,
  14. TextStyle? labelMedium,
  15. TextStyle? labelSmall}

Creates a copy of this text theme but with the given fields replaced with the new values.

Consider using or Typography.white, which implement the typography styles in the Material Design specification, as a starting point.

/// A Widget that sets the ambient theme's title text color for its
/// descendants, while leaving other ambient theme attributes alone.
class TitleColorThemeCopy extends StatelessWidget {
  const TitleColorThemeCopy({super.key, required this.titleColor, required this.child});

  final Color titleColor;
  final Widget child;

  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Theme(
      data: theme.copyWith(
        textTheme: theme.textTheme.copyWith(
          titleLarge: theme.textTheme.titleLarge!.copyWith(
            color: titleColor,
      child: child,

See also:

  • merge is used instead of copyWith when you want to merge all of the fields of a TextTheme instead of individual fields.


TextTheme copyWith({
  TextStyle? displayLarge,
  TextStyle? displayMedium,
  TextStyle? displaySmall,
  TextStyle? headlineLarge,
  TextStyle? headlineMedium,
  TextStyle? headlineSmall,
  TextStyle? titleLarge,
  TextStyle? titleMedium,
  TextStyle? titleSmall,
  TextStyle? bodyLarge,
  TextStyle? bodyMedium,
  TextStyle? bodySmall,
  TextStyle? labelLarge,
  TextStyle? labelMedium,
  TextStyle? labelSmall,
}) {
  return TextTheme(
    displayLarge: displayLarge ?? this.displayLarge,
    displayMedium: displayMedium ?? this.displayMedium,
    displaySmall: displaySmall ?? this.displaySmall,
    headlineLarge: headlineLarge ?? this.headlineLarge,
    headlineMedium: headlineMedium ?? this.headlineMedium,
    headlineSmall: headlineSmall ?? this.headlineSmall,
    titleLarge: titleLarge ?? this.titleLarge,
    titleMedium: titleMedium ?? this.titleMedium,
    titleSmall: titleSmall ?? this.titleSmall,
    bodyLarge: bodyLarge ?? this.bodyLarge,
    bodyMedium: bodyMedium ?? this.bodyMedium,
    bodySmall: bodySmall ?? this.bodySmall,
    labelLarge: labelLarge ?? this.labelLarge,
    labelMedium: labelMedium ?? this.labelMedium,
    labelSmall: labelSmall ?? this.labelSmall,