copyWith method

TextTheme copyWith ({TextStyle display4, TextStyle display3, TextStyle display2, TextStyle display1, TextStyle headline, TextStyle title, TextStyle subhead, TextStyle body2, TextStyle body1, TextStyle caption, TextStyle button, TextStyle subtitle, TextStyle overline })

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

Consider using Typography.black 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 {
  TitleColorThemeCopy({Key key, this.child, this.titleColor}) : super(key: key);

  final Color titleColor;
  final Widget child;

  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Theme(
      data: theme.copyWith(
        textTheme: theme.textTheme.copyWith(
          title: theme.textTheme.title.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.

Implementation

TextTheme copyWith({
  TextStyle display4,
  TextStyle display3,
  TextStyle display2,
  TextStyle display1,
  TextStyle headline,
  TextStyle title,
  TextStyle subhead,
  TextStyle body2,
  TextStyle body1,
  TextStyle caption,
  TextStyle button,
  TextStyle subtitle,
  TextStyle overline,
}) {
  return TextTheme(
    display4: display4 ?? this.display4,
    display3: display3 ?? this.display3,
    display2: display2 ?? this.display2,
    display1: display1 ?? this.display1,
    headline: headline ?? this.headline,
    title: title ?? this.title,
    subhead: subhead ?? this.subhead,
    body2: body2 ?? this.body2,
    body1: body1 ?? this.body1,
    caption: caption ?? this.caption,
    button: button ?? this.button,
    subtitle: subtitle ?? this.subtitle,
    overline: overline ?? this.overline,
  );
}