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,
      ),
      displayLarge: decodeTextStyle(
        value['displayLarge'] ?? value['headline1'],
        validate: false,
      ),
      displayMedium: decodeTextStyle(
        value['displayMedium'] ?? value['headline2'],
        validate: false,
      ),
      displaySmall: decodeTextStyle(
        value['displaySmall'] ?? value['headline3'],
        validate: false,
      ),
      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,
      ),
      titleLarge: decodeTextStyle(
        value['titleLarge'] ?? value['headline6'],
        validate: false,
      ),
      titleMedium: decodeTextStyle(
        value['titleMedium'] ?? value['subtitle1'],
        validate: false,
      ),
      titleSmall: decodeTextStyle(
        value['titleSmall'] ?? value['subtitle2'],
        validate: false,
      ),

      // @deprecated
      // body1
      // body2
      // bodyText1: decodeTextStyle(
      //   value['bodyText1'],
      //   validate: false,
      // ),
      // bodyText2: decodeTextStyle(
      //   value['bodyText2'],
      //   validate: false,
      // ),
      // button: decodeTextStyle(
      //   value['button'],
      //   validate: false,
      // ),
      // caption: decodeTextStyle(
      //   value['caption'],
      //   validate: false,
      // ),
      // headline1: decodeTextStyle(
      //   value['headline1'],
      //   validate: false,
      // ),
      // headline2: decodeTextStyle(
      //   value['headline2'],
      //   validate: false,
      // ),
      // headline3: decodeTextStyle(
      //   value['headline3'],
      //   validate: false,
      // ),
      // headline4: decodeTextStyle(
      //   value['headline4'],
      //   validate: false,
      // ),
      // headline5: decodeTextStyle(
      //   value['headline5'],
      //   validate: false,
      // ),
      // headline6: decodeTextStyle(
      //   value['headline6'],
      //   validate: false,
      // ),
      // overline: decodeTextStyle(
      //   value['overline'],
      //   validate: false,
      // ),
      // subtitle1: decodeTextStyle(
      //   value['subtitle1'],
      //   validate: false,
      // ),
      // subtitle2: decodeTextStyle(
      //   value['subtitle2'],
      //   validate: false,
      // ),
    );
  }

  return result;
}