flutter_floating_bottom_bar 2.1.0
flutter_floating_bottom_bar: ^2.1.0 copied to clipboard
An adaptable Flutter floating bottom bar for navigation, search, and custom widgets, with scroll-aware visibility and accessible interactions.
2.1.0 #
Added #
BottomBarLayout.maxWidthandBottomBarLayout.adaptive(maxWidth: ...)for width-capped adaptive layouts, pluscopyWith(clearMaxWidth: true)for returning a derived layout to an uncapped width.BottomBarBodyPaddingas the built-in way to reserve the live floating-bar footprint insideBottomBar.body.BottomBarScrollBehavior.showAtStartandBottomBarScrollBehavior.showOnScrollEndfor settling-based visibility restoration.
Changed #
BottomBarScope.barHeightnow reflects the full rendered footprint reserved by the bar, including configured offset and bottom safe-area when enabled.BottomBarItemaccessible naming is now deterministic:semanticLabelwins, otherwisetooltip, otherwise descendant semantics. Explicit names exclude descendant semantics to avoid duplicate announcements; items also expose selected/enabled button state, keep a 48x48 minimum target, and place badges at the directional top-end in both LTR and RTL layouts.- Custom
BottomBarMotion.transitionBuilderusage is documented as a paint-only contract that must preserve layout footprint. - The hidden action is direction-aware by default: glyph, tooltip, and
semantics flip with
scrollOpposite, the touch target stays at least 48x48 when active, and the default glyph color followsColorScheme.onPrimary. - Hidden bar actions are non-interactive and excluded from semantics when the bar is visible.
- Reduced-motion environments snap directly to the target shown/hidden state instead of animating.
BottomBarControllerownership is strict: double-attach fails in debug and release, and visibility updates are accepted only from the owning bar.BottomBarControllerboundary scrolling now documents and uses explicit start/end semantics independent ofscrollOpposite.
Fixed #
BottomBarController.scrollToStart()always targetsScrollPosition.minScrollExtent, andscrollToEnd()always targetsScrollPosition.maxScrollExtent.NestedScrollViewboundary scrolling now targets the correct coordinated controller so start/end actions reset both header and body as expected.- Large
iconOffsetvalues keep the hidden action tappable because hit testing now follows the translated visual position. - The hidden action's full 48x48 minimum target now accepts taps at its corners; circular clipping applies only to the animated visual.
- The example web app now uses Flutter's current generated bootstrap and package-specific, orientation-neutral PWA metadata.
2.0.2 #
- Fix:
BottomBarController.scrollToStart()(and the back-to-top icon) did not fully reset aNestedScrollView— the collapsedSliverAppBar/FlexibleSpaceBarstayed collapsed and the list landed below its true top. ANestedScrollViewscrolls on two coordinated positions (an outer header and an inner body), but the bar only animated the most-recently-active one. The controller now detects an enclosingNestedScrollViewand drives its shared scroll coordinator with a single call — animating the outer controller to the top (which pulls the inner body up with it) forscrollToStart, and the inner controller to the bottom (which collapses the header) forscrollToEnd. (#21)
2.0.1 #
- Fix: the back-to-top icon became unclickable when a large
iconOffsetwas set. The icon was painted at the offset position but itsSafeAreaancestor still hit-tested against the original (untranslated) rect, so a large offset moved the visible icon outside its tappable area. The offset now wraps the icon'sSafeAreaso hit-testing follows the painted position. (#19)
2.0.0 #
Major release. Breaking changes — see the migration table in README.md.
Breaking:
- Dart SDK minimum is now
>=3.5.0because the package uses Motor-backed motion. BottomBar.bodyis nowWidgetinstead ofWidget Function(BuildContext, ScrollController). The bar listens toScrollNotificationfrom any descendant scrollable; you no longer wire a controller through the builder.- The
barColor,width,offset,borderRadius,barAlignment,fit,clip, andrespectSafeAreaparameters moved intoBottomBarLayout. - The
duration,curve,start, andendparameters moved intoBottomBarMotion.BottomBarMotion()now defaults to Cupertino spring motion; existingBottomBarMotion(duration: ..., curve: ...)calls remain curve-based.start/end(doubles) are nowslideStart/slideEnd(Offsets). - The
hideOnScroll,reverse,scrollOpposite, andscrollDeltaThresholdparameters moved intoBottomBarScrollBehavior.scrollDeltaThresholdis nowdeltaThreshold. - The
iconWidth,iconHeight,iconDecoration, andbarDecorationparameters moved toBottomBarThemeData(per-instance overrides remain via thetheme:argument). BottomBarScrollControllerProvideris replaced byBottomBarScope. ThescrollControllerfield is gone; new fields arebarHeightandisVisible.- The hardcoded
Colors.blackdefault is replaced with Material 3colorScheme.surfaceContainerfor the bar andcolorScheme.primaryfor the icon.
New:
- Motor-backed Cupertino motion is the default show/hide engine, with velocity-preserving redirection when scroll direction changes mid-animation.
BottomBarMotion.cupertino(...),BottomBarMotion.curved(...), andBottomBarMotion.motor(...)constructors.BottomBarThemeDataThemeExtensionfor app-wide defaults.BottomBarTransitionenum (slide,fade,scale,slideAndFade) plusBottomBarMotion.transitionBuilder.BottomBarItemandBottomBarItemshelpers for the common nav-item case.BottomBarScope.barHeightexposes the live rendered bar height to descendants for content-padding purposes.BottomBarScope.isVisibleexposes live visibility without owning a controller.- Notification-based scroll detection works with
NestedScrollView,CustomScrollView, multipleTabBarViewchildren, and any user-suppliedScrollControllerwith no wiring. BottomBarScrollBehavior.predicatefor filtering unwanted notifications.BottomBarControllernow asserts on double-attach in debug.
Repository:
- Package source moved from
packages/flutter_floating_bottom_bar/to repo root. The example app moved toexample/. Thepackages/directory is removed.
1.4.0 #
- Upgrade project/tooling for Flutter
3.41.4development via FVM. - Update SDK constraints and refresh dependencies.
- Add
BottomBarControllerfor programmaticshow,hide,toggle,scrollToStart, andscrollToEnd. - Add
onVisibilityChangedcallback for visibility state transitions. - Add
scrollDeltaThresholdto reduce flicker from minor scroll movement. - Add
iconSemanticLabelandiconTooltipfor better accessibility. - Improve internal scroll/visibility handling and test coverage.
1.3.0 #
- Added
respectSafeAreaproperty to control whether theBottomBarshould respect the safe area. - Removed deprecated
alignmentproperty (usebarAlignmentinstead). - Fixed
ScrollControllerissues with multiple attachments. - Improved scroll listener management for better performance.
1.2.1+1 #
- Fix code formatting.
1.2.1 #
- Update to Flutter
3.22.1. - Fix divider error in example.
- Update dependencies.
1.2.0 #
- Add
offset,barAlignment,barDecoration, andiconDecorationproperties. - Remove
bottomproperty. - Deprecate
alignmentin favor ofbarAlignment. - Update all code examples and fix errors.
1.1.0 #
- Add
clipproperty to support clip behavior. - Add an example for a bar with a FAB.
1.0.1 #
- Support Flutter
3.10.5. - Update dependencies.
1.0.0+1 #
- Add documentation.
1.0.0 #
- Initial release with basic functionality.