decodeTextTheme static method

TextTheme? decodeTextTheme(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to a TextTheme. This expects the value to have one of the following structures:

2018 version

{
  "bodyText1": "<TextStyle>",
  "bodyText2": "<TextStyle>",
  "button": "<TextStyle>",
  "caption": "<TextStyle>",
  "headline1": "<TextStyle>",
  "headline2": "<TextStyle>",
  "headline3": "<TextStyle>",
  "headline4": "<TextStyle>",
  "headline5": "<TextStyle>",
  "headline6": "<TextStyle>",
  "overline": "<TextStyle>",
  "subtitle1": "<TextStyle>",
  "subtitle2": "<TextStyle>"
}

2021 version

{
  "bodyLarge": "<TextStyle>",
  "bodyMedium": "<TextStyle>",
  "bodySmall": "<TextStyle>",
  "displayLarge": "<TextStyle>",
  "displayMedium": "<TextStyle>",
  "displaySmall": "<TextStyle>",
  "headlineLarge": "<TextStyle>",
  "headlineMedium": "<TextStyle>",
  "headlineSmall": "<TextStyle>",
  "labelLarge": "<TextStyle>",
  "labelMedium": "<TextStyle>",
  "labelSmall": "<TextStyle>",
  "titleLarge": "<TextStyle>",
  "titleMedium": "<TextStyle>",
  "titleSmall": "<TextStyle>"
}

See also:

Implementation

static TextTheme? decodeTextTheme(
  dynamic value, {
  bool validate = true,
}) {
  TextTheme? result;

  if (value is TextTheme) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/text_theme',
      value: value,
      validate: validate,
    ));
    result = TextTheme(
      bodyLarge: decodeTextStyle(
        value['bodyLarge'] ?? value['bodyText1'],
        validate: false,
      ),
      bodyMedium: decodeTextStyle(
        value['bodyMedium'] ?? value['bodyText2'],
        validate: false,
      ),
      bodySmall: decodeTextStyle(
        value['bodySmall'] ?? value['caption'],
        validate: false,
      ),
      // bodyText1: @deprecated,
      // bodyText2: @deprecated,
      // button: @deprecated,
      // caption: @deprecated,

      displayLarge: decodeTextStyle(
        value['displayLarge'] ?? value['headline1'],
        validate: false,
      ),
      displayMedium: decodeTextStyle(
        value['displayMedium'] ?? value['headline2'],
        validate: false,
      ),
      displaySmall: decodeTextStyle(
        value['displaySmall'] ?? value['headline3'],
        validate: false,
      ),
      // headline1: @deprecated,
      // headline2: @deprecated,
      // headline3: @deprecated,
      // headline4: @deprecated,
      // headline5: @deprecated,
      // headline6: @deprecated,
      headlineLarge: decodeTextStyle(
        value['headlineLarge'] ?? value[''],
        validate: false,
      ),
      headlineMedium: decodeTextStyle(
        value['headlineMedium'] ?? value['headline4'],
        validate: false,
      ),
      headlineSmall: decodeTextStyle(
        value['headlineSmall'] ?? value['headline5'],
        validate: false,
      ),
      labelLarge: decodeTextStyle(
        value['labelLarge'] ?? value['button'],
        validate: false,
      ),
      labelMedium: decodeTextStyle(
        value['labelMedium'] ?? value[''],
        validate: false,
      ),
      labelSmall: decodeTextStyle(
        value['labelSmall'] ?? value['overline'],
        validate: false,
      ),
      // overline: @deprecated,
      // subtitle1: @deprecated,
      // subtitle2: @deprecated,
      titleLarge: decodeTextStyle(
        value['titleLarge'] ?? value['headline6'],
        validate: false,
      ),
      titleMedium: decodeTextStyle(
        value['titleMedium'] ?? value['subtitle1'],
        validate: false,
      ),
      titleSmall: decodeTextStyle(
        value['titleSmall'] ?? value['subtitle2'],
        validate: false,
      ),
    );
  }

  return result;
}