decodeTabBarTheme static method

TabBarTheme? decodeTabBarTheme(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to a TabBarTheme. This expects the value to have the following structure:

{
  "dividerColor": "<Color>",
  "dividerHeight": "<double>",
  "indicatorColor": "<Color>",
  "indicatorSize": "<TabBarIndicatorSize>",
  "labelPadding": "<EdgeInsetsGeometry>",
  "labelColor": "<Color>",
  "labelStyle": "<TextStyle>",
  "mouseCursor": "<WidgetStateProperty<MouseCursor>>",
  "overlayColor": "<WidgetStateProperty<Color>>",
  "splashFactory": "<InteractiveInkSplashFactory>",
  "tabAlignment": "<TabAlignment>"
  "unselectedLabelColor": "<Color>",
  "unselectedLabelStyle": "<TextStyle>",
}

See also:

Implementation

static TabBarTheme? decodeTabBarTheme(
  dynamic value, {
  bool validate = true,
}) {
  TabBarTheme? result;

  if (value is TabBarTheme) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/tab_bar_theme',
      value: value,
      validate: validate,
    ));
    assert(
      value['indicator'] == null,
      'TabBarTheme.indicator is not supported',
    );
    result = TabBarTheme(
      dividerColor: decodeColor(
        value['dividerColor'],
        validate: false,
      ),
      dividerHeight: JsonClass.maybeParseDouble(value['dividerHeight']),
      // @unencodable
      // indicator
      indicatorColor: decodeColor(
        value['indicatorColor'],
        validate: false,
      ),
      indicatorSize: decodeTabBarIndicatorSize(
        value['indicatorSize'],
        validate: false,
      ),
      labelPadding: decodeEdgeInsetsGeometry(
        value['labelPadding'],
        validate: false,
      ),
      labelColor: decodeColor(
        value['labelColor'],
        validate: false,
      ),
      labelStyle: decodeTextStyle(
        value['labelStyle'],
        validate: false,
      ),
      mouseCursor: decodeWidgetStatePropertyMouseCursor(
        value['mouseCursor'],
        validate: false,
      ),
      overlayColor: decodeWidgetStatePropertyColor(
        value['overlayColor'],
        validate: false,
      ),
      tabAlignment: decodeTabAlignment(
        value['tabAlignment'],
        validate: false,
      ),
      splashFactory: decodeInteractiveInkFeatureFactory(
        value['splashFactory'],
        validate: false,
      ),
      unselectedLabelColor: decodeColor(
        value['unselectedLabelColor'],
        validate: false,
      ),
      unselectedLabelStyle: decodeTextStyle(
        value['unselectedLabelStyle'],
        validate: false,
      ),
    );
  }

  return result;
}