GlassTabBar.bottom constructor

const GlassTabBar.bottom({
  1. required List<GlassTab> tabs,
  2. required int selectedIndex,
  3. required ValueChanged<int> onTabSelected,
  4. Key? key,
  5. GlassTabBarExtraButton? extraButton,
  6. ScrollController? scrollController,
  7. Widget? bottomAccessory,
  8. bool bottomAccessoryEnabled = true,
  9. double bottomAccessorySpacing = 6.0,
  10. double? bottomAccessoryHeight,
  11. double spacing = 8,
  12. double horizontalPadding = 20,
  13. double verticalPadding = 20,
  14. double barHeight = 64,
  15. double barBorderRadius = _kDefaultBottomBorderRadius,
  16. EdgeInsetsGeometry tabPadding = const EdgeInsets.symmetric(horizontal: 4),
  17. double iconLabelSpacing = 4,
  18. bool enableBlend = true,
  19. bool groupBackdrop = true,
  20. double blendAmount = 10,
  21. LiquidGlassSettings? settings,
  22. bool showIndicator = true,
  23. Color? indicatorColor,
  24. LiquidGlassSettings? indicatorSettings,
  25. double indicatorPinchStrength = 0.4,
  26. Color? selectedIconColor,
  27. Color? unselectedIconColor,
  28. Color? selectedLabelColor,
  29. Color? unselectedLabelColor,
  30. TextStyle? selectedLabelStyle,
  31. TextStyle? unselectedLabelStyle,
  32. double iconSize = 24,
  33. double labelFontSize = 11,
  34. TextStyle? textStyle,
  35. Duration glowDuration = const Duration(milliseconds: 300),
  36. double glowBlurRadius = 32,
  37. double glowSpreadRadius = 8,
  38. double glowOpacity = 0.6,
  39. GlassQuality? quality,
  40. GlassQuality? backgroundQuality,
  41. double magnification = 1.15,
  42. double innerBlur = 0.0,
  43. MaskingQuality maskingQuality = MaskingQuality.high,
  44. GlobalKey<State<StatefulWidget>>? backgroundKey,
  45. double? tabWidth,
  46. double? indicatorBorderRadius,
  47. EdgeInsetsGeometry indicatorExpansion = const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
  48. Color? interactionGlowColor,
  49. double? interactionGlowRadius,
  50. GlassInteractionBehavior interactionBehavior = GlassInteractionBehavior.full,
  51. double pressScale = 1.04,
  52. bool platformViewBackdrop = false,
  53. bool adaptiveBrightness = false,
  54. ValueChanged<Brightness>? onBrightnessChanged,
  55. ValueListenable<Brightness>? brightnessOverride,
})

Creates a floating bottom tab bar — the iOS 26 UITabBarController equivalent.

This constructor replaces GlassBottomBar with identical parameter names and defaults. Existing GlassBottomBar code migrates by search-replacing GlassBottomBar( → GlassTabBar.bottom( and GlassBottomBarTab( → GlassTab(.

Play-pill / mini-player accessory

Pass a widget to bottomAccessory to render a persistent overlay (e.g. a mini-player) above the glass tab bar pill — identical to iOS 26's tabViewBottomAccessory modifier.

Supply bottomAccessoryHeight so that GlassScaffold can include the accessory in its effectiveBottomBarHeight (via preferredSize) and correctly compute body edge-fades. If omitted the scroll area will be inset only by the pill height.

Toggle visibility with bottomAccessoryEnabled: the accessory animates in/out with an AnimatedSize so there is no jump.

Implementation

const GlassTabBar.bottom({
  required List<GlassTab> tabs,
  required int selectedIndex,
  required ValueChanged<int> onTabSelected,
  Key? key,
  GlassTabBarExtraButton? extraButton,
  ScrollController? scrollController,
  Widget? bottomAccessory,
  bool bottomAccessoryEnabled = true,
  double bottomAccessorySpacing = 6.0,
  double? bottomAccessoryHeight,
  double spacing = 8,
  double horizontalPadding = 20,
  double verticalPadding = 20,
  double barHeight = 64,
  double barBorderRadius = _kDefaultBottomBorderRadius,
  EdgeInsetsGeometry tabPadding = const EdgeInsets.symmetric(horizontal: 4),
  double iconLabelSpacing = 4,
  bool enableBlend = true,
  bool groupBackdrop = true,
  double blendAmount = 10,
  LiquidGlassSettings? settings,
  bool showIndicator = true,
  Color? indicatorColor,
  LiquidGlassSettings? indicatorSettings,
  double indicatorPinchStrength = 0.4,
  Color? selectedIconColor,
  Color? unselectedIconColor,
  Color? selectedLabelColor,
  Color? unselectedLabelColor,
  TextStyle? selectedLabelStyle,
  TextStyle? unselectedLabelStyle,
  double iconSize = 24,
  double labelFontSize = 11,
  TextStyle? textStyle,
  Duration glowDuration = const Duration(milliseconds: 300),
  double glowBlurRadius = 32,
  double glowSpreadRadius = 8,
  double glowOpacity = 0.6,
  GlassQuality? quality,
  GlassQuality? backgroundQuality,
  double magnification = 1.15,
  double innerBlur = 0.0,
  MaskingQuality maskingQuality = MaskingQuality.high,
  GlobalKey? backgroundKey,
  double? tabWidth,
  double? indicatorBorderRadius,
  EdgeInsetsGeometry indicatorExpansion =
      const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
  Color? interactionGlowColor,
  double? interactionGlowRadius,
  GlassInteractionBehavior interactionBehavior =
      GlassInteractionBehavior.full,
  double pressScale = 1.04,
  bool platformViewBackdrop = false,
  bool adaptiveBrightness = false,
  ValueChanged<Brightness>? onBrightnessChanged,
  ValueListenable<Brightness>? brightnessOverride,
}) : this._(
        key: key,
        placement: _GlassTabBarPlacement.bottom,
        tabs: tabs,
        selectedIndex: selectedIndex,
        onTabSelected: onTabSelected,
        extraButton: extraButton,
        scrollController: scrollController,
        bottomAccessory: bottomAccessory,
        bottomAccessoryEnabled: bottomAccessoryEnabled,
        bottomAccessorySpacing: bottomAccessorySpacing,
        bottomAccessoryHeight: bottomAccessoryHeight,
        spacing: spacing,
        horizontalPadding: horizontalPadding,
        verticalPadding: verticalPadding,
        barHeight: barHeight,
        barBorderRadius: barBorderRadius,
        tabPadding: tabPadding,
        iconLabelSpacing: iconLabelSpacing,
        enableBlend: enableBlend,
        groupBackdrop: groupBackdrop,
        blendAmount: blendAmount,
        settings: settings,
        showIndicator: showIndicator,
        indicatorColor: indicatorColor,
        indicatorSettings: indicatorSettings,
        indicatorPinchStrength: indicatorPinchStrength,
        selectedIconColor: selectedIconColor,
        unselectedIconColor: unselectedIconColor,
        selectedLabelColor: selectedLabelColor,
        unselectedLabelColor: unselectedLabelColor,
        selectedLabelStyle: selectedLabelStyle,
        unselectedLabelStyle: unselectedLabelStyle,
        iconSize: iconSize,
        labelFontSize: labelFontSize,
        textStyle: textStyle,
        glowDuration: glowDuration,
        glowBlurRadius: glowBlurRadius,
        glowSpreadRadius: glowSpreadRadius,
        glowOpacity: glowOpacity,
        quality: quality,
        backgroundQuality: backgroundQuality,
        magnification: magnification,
        innerBlur: innerBlur,
        maskingQuality: maskingQuality,
        backgroundKey: backgroundKey,
        tabWidth: tabWidth,
        indicatorBorderRadius: indicatorBorderRadius,
        indicatorExpansion: indicatorExpansion,
        interactionGlowColor: interactionGlowColor,
        interactionGlowRadius: interactionGlowRadius,
        interactionBehavior: interactionBehavior,
        pressScale: pressScale,
        platformViewBackdrop: platformViewBackdrop,
        adaptiveBrightness: adaptiveBrightness,
        onBrightnessChanged: onBrightnessChanged,
        brightnessOverride: brightnessOverride,
      );