NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3040 most downloaded on pub.dev
An adaptable Flutter floating bottom bar for navigation, search, and custom widgets, with scroll-aware visibility and accessible interactions.
Last release 18 days ago
20 Sep 2026
Release timing varies
gaps range from 6 weeks to 13 months
Nearly every release is documented
notes for 13 of 13 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
13 releases · first in 2021
Requires Dart >=3.12.0 and Flutter >=3.44.0 .
Published on pub.dev.
>=3.12.0 and Flutter >=3.44.0.package:material_ui/material_ui.dart.material_ui; migrated apps no longer needMaterialUiCompatibilityBridge for this package.BottomBarLayout and BottomBarLayout.adaptive now default borderRadiusBorderRadius.zero for a square bar.BottomBarLayout.avoidKeyboard (default true): pads the bar and hiddenMediaQuery.viewInsets.bottom so they sit above the on-screenScaffold(resizeToAvoidBottomInset: false)). No-op when insets are alreadyBottomBarScope.barHeight orBottomBarBodyPadding.BottomBarController.reportScroll({required double delta}): drives thehideOnScroll visibility rules from a scrollScrollNotifications, such as an embedded WebView.scrollToStart()/scrollToEnd(),ScrollPosition.BottomBarLabelBehavior (alwaysShow, onlySelected, alwaysHide) andBottomBarItems.labelBehavior: controls when descendant BottomBarItemBottomBarItem via the new publicBottomBarItemsScope inherited widget; items outside a BottomBarItemsalwaysShow default.BottomBarScrollBehavior.keepVisibleOnFocus (default true): skipsBottomBar.child holds focus, so aBottomBarController.hide() still hides the bar regardless ofIn bounded rows wide enough for each item's 48x48 minimum target,
BottomBarItems wraps every child in Expanded, so items share the row's
width equally. Narrow bounded rows use a horizontal scroll view to preserve
the minimum targets; unbounded rows keep their raw children. A
BottomBarItem's Text label (with non-null data) is truncated to a
single line with an ellipsis; Text.rich and other label widgets are
unaffected.
Migrated from package:flutter/material.dart to the standalone
material_ui package. Material was
decoupled from the Flutter SDK in 3.47; the in-SDK copy is
frozen to contributions
and scheduled for removal.
Apps that have already migrated no longer need
MaterialUiCompatibilityBridge on account of this package — without it, the
bar resolved Theme.of(context).colorScheme against the framework Material
and silently fell back to a default theme.
Minimum SDK constraints raised to Dart 3.12 / Flutter 3.44, which is what
material_ui requires.
Attaching a BottomBarController to a second bar now throws a
FlutterError in debug builds as well, instead of an AssertionError.
BottomBarLayout and BottomBarLayout.adaptive now default
borderRadius to 28 so passing layout: no longer squares the bar.
Pass BorderRadius.zero to opt out.
TextField135 package tests and 3 example tests passed on Flutter 3.44.4. The publish dry-run reported zero warnings. Existing example formatting and analyzer findings still block the full quality gate.
One column per quarter.
flutter_floating_bottom_bar 2.1.0 is available on pub.dev .
flutter_floating_bottom_bar 2.1.0 is available on pub.dev.
This release makes scrolling behavior more deterministic, improves accessibility and responsive layouts, and strengthens package release quality.
BottomBarLayout.maxWidth and BottomBarLayout.adaptive(...) for width-capped layouts on phones, tablets, and desktop.BottomBarBodyPadding to reserve the live floating-bar footprint, including offset and bottom safe area.showAtStart and showOnScrollEnd visibility behavior and correct nested-scroll start/end targeting.| Responsive desktop demo | Polished mobile demo |
|---|---|
flutter pub publish --dry-run completed with zero warnings; compressed archive size is 251 KB.See the complete changelog for every addition, behavior change, and fix.
BottomBarLayout.maxWidth and BottomBarLayout.adaptive(maxWidth: ...) for
width-capped adaptive layouts, plus copyWith(clearMaxWidth: true) for
returning a derived layout to an uncapped width.BottomBarBodyPadding as the built-in way to reserve the live floating-bar
footprint inside BottomBar.body.BottomBarScrollBehavior.showAtStart and
BottomBarScrollBehavior.showOnScrollEnd for settling-based visibility
restoration.BottomBarScope.barHeight now reflects the full rendered footprint reserved
by the bar, including configured offset and bottom safe-area when enabled.BottomBarItem accessible naming is now deterministic:
semanticLabel wins, otherwise tooltip, 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.BottomBarMotion.transitionBuilder usage is documented as a
paint-only contract that must preserve layout footprint.scrollOpposite, the touch target stays at least 48x48
when active, and the default glyph color follows ColorScheme.onPrimary.BottomBarController ownership is strict: double-attach fails in debug and
release, and visibility updates are accepted only from the owning bar.BottomBarController boundary scrolling now documents and uses explicit
start/end semantics independent of scrollOpposite.BottomBarController.scrollToStart() always targets
ScrollPosition.minScrollExtent, and scrollToEnd() always targets
ScrollPosition.maxScrollExtent.NestedScrollView boundary scrolling now targets the correct coordinated
controller so start/end actions reset both header and body as expected.iconOffset values keep the hidden action tappable because hit testing
now follows the translated visual position.BottomBarController.scrollToStart() (and the built-in back-to-top icon) now fully resets a NestedScrollView . Previously the collapsed SliverAppBar /
Patch release.
BottomBarController.scrollToStart() (and the built-in back-to-top icon) now fully resets a NestedScrollView. Previously the collapsed SliverAppBar/FlexibleSpaceBar stayed 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 enclosing NestedScrollView and drives its shared scroll coordinator with a single call — animating the outer controller to the top (which pulls the inner body up with it) for scrollToStart, and the inner controller to the bottom (which collapses the header) for scrollToEnd. (#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
BottomBarController.scrollToStart() (and the back-to-top icon) did not
fully reset a NestedScrollView — the collapsed
SliverAppBar/FlexibleSpaceBar stayed collapsed and the list landed below
its true top. A NestedScrollView scrolls 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 enclosing
NestedScrollView and drives its shared scroll coordinator with a single
call — animating the outer controller to the top (which pulls the inner body
up with it) for scrollToStart, and the inner controller to the bottom
(which collapses the header) for scrollToEnd.
(#21)The back-to-top icon became unclickable when a large iconOffset was set. The icon was painted at the offset position, but its SafeArea ancestor still
Patch release.
iconOffset was set. The icon was painted at the offset position, but its SafeArea ancestor 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's SafeArea so 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
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
Major release. Breaking changes — see the migration table in README.md.
Breaking:
>=3.5.0 because the package uses Motor-backed
motion.BottomBar.body is now Widget instead of
Widget Function(BuildContext, ScrollController). The bar listens to
ScrollNotification from any descendant scrollable; you no longer wire a
controller through the builder.barColor, width, offset, borderRadius, barAlignment, fit,
clip, and respectSafeArea parameters moved into BottomBarLayout.duration, curve, start, and end parameters moved into
BottomBarMotion. BottomBarMotion() now defaults to Cupertino spring
motion; existing BottomBarMotion(duration: ..., curve: ...) calls remain
curve-based. start/end (doubles) are now slideStart/slideEnd
(Offsets).hideOnScroll, reverse, scrollOpposite, and
scrollDeltaThreshold parameters moved into BottomBarScrollBehavior.
scrollDeltaThreshold is now deltaThreshold.iconWidth, iconHeight, iconDecoration, and barDecoration
parameters moved to BottomBarThemeData (per-instance overrides remain via
the theme: argument).BottomBarScrollControllerProvider is replaced by BottomBarScope. The
scrollController field is gone; new fields are barHeight and isVisible.Colors.black default is replaced with Material 3
colorScheme.surfaceContainer for the bar and colorScheme.primary for the
icon.New:
BottomBarMotion.cupertino(...), BottomBarMotion.curved(...), and
BottomBarMotion.motor(...) constructors.BottomBarThemeData ThemeExtension for app-wide defaults.BottomBarTransition enum (slide, fade, scale, slideAndFade) plus
BottomBarMotion.transitionBuilder.BottomBarItem and BottomBarItems helpers for the common nav-item case.BottomBarScope.barHeight exposes the live rendered bar height to
descendants for content-padding purposes.BottomBarScope.isVisible exposes live visibility without owning a
controller.NestedScrollView,
CustomScrollView, multiple TabBarView children, and any user-supplied
ScrollController with no wiring.BottomBarScrollBehavior.predicate for filtering unwanted notifications.BottomBarController now asserts on double-attach in debug.Repository:
packages/flutter_floating_bottom_bar/ to repo
root. The example app moved to example/. The packages/ directory is
removed.Full Changelog : 1.3.0...1.4.0
Full Changelog: 1.3.0...1.4.0
3.41.4 development via FVM.BottomBarController for programmatic show, hide, toggle,
scrollToStart, and scrollToEnd.onVisibilityChanged callback for visibility state transitions.scrollDeltaThreshold to reduce flicker from minor scroll movement.iconSemanticLabel and iconTooltip for better accessibility.Full Changelog : 1.2.1...1.3.0
Full Changelog: 1.2.1...1.3.0
respectSafeArea property to control whether the BottomBar should
respect the safe area.alignment property (use barAlignment instead).ScrollController issues with multiple attachments.v1.2.0 | Update to Flutter 3.13.0, add offset , barAlignment , barDecoration , iconDecoration properties by @codenameakshay in #6
offset, barAlignment, barDecoration, iconDecoration properties by @codenameakshay in #6Full Changelog: 1.1.0...1.2.1
3.22.1.Full Changelog : 1.2.1...1.2.1+1
Deprecate alignment in favor of barAlignment.
offset, barAlignment, barDecoration, and iconDecoration
properties.bottom property.alignment in favor of barAlignment.Add clip property to support clip behavior. Add an example for bar with a FAB.
Add clip property to support clip behavior.
Add an example for bar with a FAB.
Support for Flutter 3.10.5
Update dependencies
clip property to support clip behavior.Initial release with basic functionality.
- Add documentation.
Your coding agent can read these notes before it upgrades. Set up the MCP server →