createTabBarTheme static method

TabBarThemeData createTabBarTheme(
  1. Palette colors,
  2. TextTheme textTheme
)

Implementation

static TabBarThemeData createTabBarTheme(
  Palette colors,
  TextTheme textTheme,
) {
  final labelColor = WidgetStateColor.resolveWith((states) {
    if (states.contains(WidgetState.selected)) {
      return colors.text;
    } else if (states.contains(WidgetState.hovered)) {
      return colors.textHoveredText;
    } else if (states.contains(WidgetState.pressed)) {
      return colors.textSplashedText;
    } else {
      return colors.backgroundText;
    }
  });
  return TabBarThemeData(
    // Oddly, this still is required even if indicatorColor is set.
    indicator: UnderlineTabIndicator(
      borderSide: BorderSide(color: colors.fill, width: 2),
    ),
    indicatorColor: colors.fill,
    indicatorSize: TabBarIndicatorSize.label,
    dividerColor: Colors.transparent,
    labelColor: colors.text,
    labelStyle: textTheme.labelLarge,
    unselectedLabelColor: labelColor,
    unselectedLabelStyle: textTheme.labelLarge,
    overlayColor: WidgetStateProperty.resolveWith((Set<WidgetState> states) {
      if (states.contains(WidgetState.selected)) {
        return colors.textSplashed;
      } else if (states.contains(WidgetState.hovered)) {
        return colors.textHovered;
      } else if (states.contains(WidgetState.pressed)) {
        return colors.textSplashed;
      } else {
        return colors.background;
      }
    }),
    splashFactory: splashFactory,
    mouseCursor: null, // use default view
    tabAlignment: TabAlignment.fill,
  );
}