flutter_floating_bottom_bar
An adaptable Flutter floating bottom bar for navigation, search, and custom widgets, with scroll-aware visibility and accessible interactions.
2.1.0
4.7K downloads/mo
#3924 most downloaded on pub.dev
codenameakshay/flutter-floating-bottom-bar
What this package is like to depend on
Last release 13 days ago
10 Aug 2026
Ships fairly regularly
a new release about every 8 months
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
12 releases · first in 2021
5 releases in the last 12 months
see the full history below
Release timeline
12 releases · Dec 2021 to Aug 2026Releases
latest 12-
2.1.010 Aug 2026Release notes
Open source →flutter_floating_bottom_bar 2.1.0is available on pub.dev.This release makes scrolling behavior more deterministic, improves accessibility and responsive layouts, and strengthens package release quality.
Highlights
- Add
BottomBarLayout.maxWidthandBottomBarLayout.adaptive(...)for width-capped layouts on phones, tablets, and desktop. - Add
BottomBarBodyPaddingto reserve the live floating-bar footprint, including offset and bottom safe area. - Add
showAtStartandshowOnScrollEndvisibility behavior and correct nested-scroll start/end targeting. - Make controller ownership strict and isolate unrelated descendant and floating-child scrollables.
- Replace build-time size polling with render-time observation for more stable layout performance.
- Improve reduced-motion behavior, hidden-state hit testing and semantics, RTL badges, accessible naming, contrast, and 48×48 minimum touch targets.
- Modernize the example app, web bootstrap, documentation, CI, and pub.dev archive validation.
Screenshots
Responsive desktop demo Polished mobile demo Verification
- 102 package tests passed.
- 3 example smoke and UX tests passed.
- Package and example analysis completed with zero issues.
flutter pub publish --dry-runcompleted with zero warnings; compressed archive size is 251 KB.- GitHub Actions passed on the merged release commit.
- Accessibility and visual QA checks passed.
See the complete changelog for every addition, behavior change, and fix.
Release notes
Open source →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.
- Add
-
2.0.226 Jun 2026Release notes
Open source →Patch release.
Fixed
BottomBarController.scrollToStart()(and the built-in back-to-top icon) now fully resets aNestedScrollView. Previously the collapsedSliverAppBar/FlexibleSpaceBarstayed collapsed and the list landed below its true top, because the bar only animated the most-recently-active of the view's two coordinated scroll positions. 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, #22)
Full Changelog: 2.0.1...2.0.2
📦 Published to pub.dev: https://pub.dev/packages/flutter_floating_bottom_bar/versions/2.0.2
Release notes
Open source →- 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.124 Jun 2026Release notes
Open source →Patch release.
Fixed
- 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, #20)
Full Changelog: 2.0.0...2.0.1
📦 Published to pub.dev: https://pub.dev/packages/flutter_floating_bottom_bar/versions/2.0.1
Release notes
Open source →- 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)
- The back-to-top icon became unclickable when a large
-
2.0.030 Apr 2026Release notes
Open source →What's Changed
- feat: new update by @codenameakshay in #18
Issues dock AI prompt dock Basic TabBar Minimal API Nested scroll Badged nav Custom transition
Full Changelog: 1.4.0...2.0.0
Release notes
Open source →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.010 Mar 2026Release notes
Open source →- 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.
- Upgrade project/tooling for Flutter
-
1.3.014 Apr 2025Release notes
Open source →- 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.
- Added
-
1.2.123 Aug 2024Release notes
Open source →What's Changed
- v1.2.0 | Update to Flutter 3.13.0, add
offset,barAlignment,barDecoration,iconDecorationproperties by @codenameakshay in #6 - Using correct dependency name with underscores. by @chintan100 in #9
- Fix for Unpleasant overlay effect by @JanZeman in #14
- Fix for Unexpected white line on the Sample app TabBar by @JanZeman in #12
New Contributors
- @chintan100 made their first contribution in #9
- @JanZeman made their first contribution in #14
Full Changelog: 1.1.0...1.2.1
Release notes
Open source →- Update to Flutter
3.22.1. - Fix divider error in example.
- Update dependencies.
- v1.2.0 | Update to Flutter 3.13.0, add
-
1.2.1+123 Aug 2024 -
1.2.028 Aug 2023Release notes
Open source →- Add
offset,barAlignment,barDecoration, andiconDecorationproperties. - Remove
bottomproperty. - Deprecate
alignmentin favor ofbarAlignment. - Update all code examples and fix errors.
- Add
-
1.1.009 Aug 2022Release notes
Open source →1.1.0
Add clip property to support clip behavior.
Add an example for bar with a FAB.1.0.1
Support for Flutter 3.10.5
Update dependenciesRelease notes
Open source →- Add
clipproperty to support clip behavior. - Add an example for a bar with a FAB.
- Add
-
1.0.026 Dec 2021 -
1.0.0+126 Dec 2021