GlassSearchableBottomBar constructor
const
GlassSearchableBottomBar({
- required List<
GlassBottomBarTab> tabs, - required int selectedIndex,
- required ValueChanged<
int> onTabSelected, - required GlassSearchBarConfig searchConfig,
- Key? key,
- SearchableBottomBarController? controller,
- bool isSearchActive = false,
- GlassTabBarExtraButton? extraButton,
- double spacing = 8,
- double horizontalPadding = 20,
- double verticalPadding = 20,
- double barHeight = 64,
- double searchBarHeight = 50,
- double barBorderRadius = _kDefaultBorderRadius,
- EdgeInsetsGeometry tabPadding = const EdgeInsets.symmetric(horizontal: 4),
- double iconLabelSpacing = 4,
- bool enableBlend = 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,
- Color? interactionGlowColor,
- double interactionGlowRadius = 1.5,
- GlassQuality? quality,
- double magnification = 1.15,
- double innerBlur = 0.0,
- bool platformViewBackdrop = false,
- MaskingQuality maskingQuality = MaskingQuality.high,
- GlobalKey<
State< ? backgroundKey,StatefulWidget> > - SpringDescription? springDescription,
- GlassTabPillAnchor tabPillAnchor = GlassTabPillAnchor.start,
- GlassInteractionBehavior interactionBehavior = GlassInteractionBehavior.full,
- double pressScale = 1.04,
- double? tabWidth,
- double? indicatorBorderRadius,
- EdgeInsetsGeometry indicatorExpansion = const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
- VoidCallback? onBarTap,
- bool whitenAtBottom = true,
- double whitenBottomThreshold = 45.0,
- double whitenAtBottomTarget = 1.0,
- ScrollController? scrollController,
- bool adaptiveBrightness = false,
- ValueChanged<
Brightness> ? onBrightnessChanged, - ValueListenable<
Brightness> ? brightnessOverride,
Creates a glass bottom bar with a morphing search pill.
Implementation
const GlassSearchableBottomBar({
required this.tabs,
required this.selectedIndex,
required this.onTabSelected,
required this.searchConfig,
super.key,
this.controller,
this.isSearchActive = false,
this.extraButton,
this.spacing = 8,
this.horizontalPadding = 20,
this.verticalPadding = 20,
this.barHeight = 64,
this.searchBarHeight = 50,
this.barBorderRadius = _kDefaultBorderRadius,
this.tabPadding = const EdgeInsets.symmetric(horizontal: 4),
this.iconLabelSpacing = 4,
this.enableBlend = true,
this.blendAmount = 10,
this.settings,
this.showIndicator = true,
this.indicatorColor,
this.indicatorSettings,
this.indicatorPinchStrength = 0.4,
this.selectedIconColor,
this.unselectedIconColor,
this.selectedLabelColor,
this.unselectedLabelColor,
this.selectedLabelStyle,
this.unselectedLabelStyle,
this.iconSize = 24,
this.labelFontSize = 11,
this.textStyle,
this.glowDuration = const Duration(milliseconds: 300),
this.glowBlurRadius = 32,
this.glowSpreadRadius = 8,
this.glowOpacity = 0.6,
this.interactionGlowColor,
this.interactionGlowRadius = 1.5,
this.quality,
this.magnification = 1.15,
this.innerBlur = 0.0,
this.platformViewBackdrop = false,
this.maskingQuality = MaskingQuality.high,
this.backgroundKey,
this.springDescription,
this.tabPillAnchor = GlassTabPillAnchor.start,
// ── Interaction ──────────────────────────────────────────────────────────
this.interactionBehavior = GlassInteractionBehavior.full,
this.pressScale = 1.04,
this.tabWidth,
this.indicatorBorderRadius,
this.indicatorExpansion =
const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
this.onBarTap,
// ── Whiten-at-bottom (light-mode legibility) ─────────────────────────────
this.whitenAtBottom = true,
this.whitenBottomThreshold = 45.0,
this.whitenAtBottomTarget = 1.0,
this.scrollController,
// ── Content-aware brightness ─────────────────────────────────────────────
this.adaptiveBrightness = false,
this.onBrightnessChanged,
this.brightnessOverride,
}) : assert(tabs.length > 0,
'GlassSearchableBottomBar requires at least one tab'),
assert(
selectedIndex >= 0 && selectedIndex < tabs.length,
'selectedIndex must be between 0 and tabs.length - 1',
),
assert(
tabWidth == null || tabWidth > 0,
'tabWidth must be positive, or null to use expand (full-width) mode.',
);