PackageTrack
Sign in Get early access

persistent_bottom_nav_bar_v2

A highly customizable bottom navigation bar for Flutter. Includes 17 prebuilt styles but can also be used with your custom style.

6.4.0 15K downloads/mo #2502 most downloaded on pub.dev jb3rndt/PersistentBottomNavBarV2

What this package is like to depend on

Last release 13 days ago

10 Aug 2026

Release timing varies

gaps range from 2 weeks to 7 months

Nearly every release is documented

notes for 38 of 38 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

48 releases · first in 2022

5 releases in the last 12 months

see the full history below

Release timeline

48 releases · Jan 2022 to Aug 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 48
  1. 6.4.0 10 Aug 2026
    Release notes

    Commits

    • 1d70e71: Bump go_router from 17.1.0 to 17.2.0 (dependabot[bot]) #226
    • 37f3281: Bump go_router from 17.2.0 to 17.2.3 (#229) (dependabot[bot]) #229
    • 1c0d9e3: Bump go_router from 17.2.3 to 17.4.0 (#231) (dependabot[bot]) #231
    • 4db1c1c: Version 6.4.0 (jb3rndt)
    Open source →
    Release notes

    Changed

    • bump gorouter to 17.4.0
    Open source →
  2. 6.3.2 22 Mar 2026
    Release notes

    Commits

    • 8fad3e2: Version 6.3.1 (jb3rndt)
    • d3fd0eb: Do not hide the navbar when returning from a negative scroll offset (e.g. due to BouncingScrollPhysics) (jb3rndt)
    • 576e2fd: Version 6.3.2 (jb3rndt)
    Open source →
    Release notes

    Fixed

    • Do not hide the navbar when returning from a negative scroll offset (e.g. due to BouncingScrollPhysics)
    Open source →
  3. 6.3.1 01 Mar 2026
    Release notes

    Commits

    • 92d1e25: Add changelog note (jb3rndt)
    • 60828f3: Upgrade example to UIScene (jb3rndt) #224
    • 929b40f: Re-add null check for BackdropFilter.filter property (jb3rndt) #224
    • 296db84: Bump lints to 6.1.0, source_span to 1.10.2, vm_service to 15.0.2 (jb3rndt) #224
    • 0ce1e2f: Run tests on multiple flutter versions (jb3rndt) #224
    • f19d238: Version 6.3.1 (jb3rndt)
    Open source →
    Release notes

    Fixed

    • BackdropFilter.filter it not nullable in older flutter versions
    Open source →
  4. 6.3.0 22 Feb 2026
    Release notes

    Commits

    • c2a73df: Bump go_router from 16.3.0 to 17.0.0 (#220) (dependabot[bot]) #220
    • 4e2c97b: Bump go_router from 17.0.0 to 17.0.1 (#221) (dependabot[bot]) #221
    • 1cf94f6: Bump go_router from 17.0.1 to 17.1.0 (#222) (dependabot[bot]) #222
    • 4598baf: Run pub get and remove unused null check (jb3rndt)
    • fc71316: Version 6.3.0 (jb3rndt)
    Open source →
    Release notes

    Changed

    • bump gorouter to 17.1.0
    Open source →
  5. 6.2.0 28 Oct 2025
    Release notes

    Commits

    • 45b1b57: add type annotation (jb3rndt)
    • 3ad5254: Bump go_router from 15.2.3 to 16.0.0 (#211) (dependabot[bot]) #211
    • 73d80a1: Bump go_router from 16.0.0 to 16.1.0 (#212) (dependabot[bot]) #212
    • 25ea831: Bump go_router from 16.1.0 to 16.2.5 (#217) (dependabot[bot]) #217
    • a29ee7d: Bump go_router from 16.2.5 to 16.3.0 (#218) (dependabot[bot]) #218
    • 867d666: Version 6.2.0 (jb3rndt)
    Open source →
    Release notes

    Changed

    • bump gorouter to 16.3.0
    Open source →
  6. 6.1.0 22 Jun 2025
    Release notes

    Commits

    • b8a74ab: add regression test for #205 (jb3rndt)
    • 497470b: Bump go_router from 15.1.2 to 15.2.0 (#209) (dependabot[bot]) #209
    • 33d0878: Bump flutter_lints from 5.0.0 to 6.0.0 (#207) (dependabot[bot]) #207
    • a860b75: upgrade go-router to 15.2.3 (jb3rndt)
    • ce178dc: move test (jb3rndt)
    • 9da2e48: merge and skip tests for changing the number of tabs (jb3rndt)
    • 61cf751: Version 6.1.0 (jb3rndt)
    Open source →
    Release notes

    Changed

    • bump gorouter to 15.2.3
    Open source →
  7. 6.0.1 18 May 2025
    Release notes

    Commits

    • 1679651: change project_type and rename test file (jb3rndt)
    • 1b04239: move test helpers to util.dart (jb3rndt)
    • a2b861a: make navigatorkeys consistent per tab (jb3rndt)
    • 73d10dc: Version 6.0.1 (jb3rndt)
    Open source →
    Release notes

    Fixed

    • If no custom NavigatorKeys were specified, the state of each tab got lost when reloading.
    Open source →
  8. 6.0.0 17 May 2025
    Release notes

    Commits

    • eec1e62: Use NavBarOverlap.none() as the default for navBarOverlap (Jannis Berndt) #187
    • 9a077e3: Moved ItemConfig opacity and filter to NavBarDecoration (jb3rndt) #187
    • 9a74969: Merge branch 'master' into v6.0.0 (jb3rndt) #187
    • 10822e7: Remove controller onIndexChanged and listen instead (jb3rndt) #187
    • 2cb4729: Merge branch 'master' into v6.0.0 (jb3rndt) #187
    • df1423f: Merge branch 'v6.0.0' of https://github.com/jb3rndt/PersistentBottomNavBarV2 into v6.0.0 (jb3rndt) #187
    • 880e65e: Remove deprecated use of onWillPop (jb3rndt) #187
    • 5ba9741: Fix viewInset when resizeToAvoidBottomInset is set to false (jb3rndt) #187
    • 5a0492d: Some configs and cleanups (jb3rndt) #187
    • 7d17f9c: Generate NavigatorKey directly in config (jb3rndt) #187
    • dd15bab: Linter fixes (jb3rndt) #187
    • d05bac6: Allow changing the number of tabs at runtime (jb3rndt) #187
    • df04fe8: Remove selectedTabContext (jb3rndt) #187
    • 36c3fe1: Clean up TabSwitchingView (jb3rndt) #187
    • cd71d30: Update changelog and remove deprecated onWillPop (jb3rndt) #187
    • 2a6e87f: Add hideOnScrollVelocity to allow hiding the NavBar when scrolling down (jb3rndt) #187
    • 01a448a: Update README (jb3rndt) #187
    • 7438092: Replaced popAllScreensOnTapAnyTabs with keepNavigatorHistory (jb3rndt) #187
    • 6a739ff: Add SelectedTabPressConfig, bundle some scattered settings into that and add scrollToTop functionality (jb3rndt) #187
    • b1210da: Add tests for SelectedTabPressConfig (jb3rndt) #187
    • 00c690e: Add function to pop all screens of the current tab (jb3rndt) #187
    • be9befc: Add previousIndex to controller (jb3rndt) #187
    • 4a3245f: Add animated icons (jb3rndt) #187
    • 24bd019: Update readme announcing v6 and v6 syntax (jb3rndt) #187
    • 657cdae: Remove navBarHeight use the height of each style instead (jb3rndt) #187
    • e2c60c7: Update flutter version in ci (jb3rndt) #187
    • f4ca026: Merge branch 'master' into v6.0.0 (Jannis Berndt) #187
    • bb3d585: Update codecov and checkout steps in ci (jb3rndt) #187
    • fb29cca: Merge branch 'v6.0.0' of https://github.com/jb3rndt/PersistentBottomNavBarV2 into v6.0.0 (jb3rndt) #187
    • 1d72259: Refactor tests (jb3rndt) #187
    • f15c5e6: Add missing navigator functions tests (jb3rndt) #187
    • e20771a: Fix tab view scaffold to rerender once the animation finished to update the offstage state (jb3rndt) #187
    • 635023e: Animate initial animated icon instantly (jb3rndt) #187
    • 1e568dd: Add tests for animated icons and navigator configuration (jb3rndt) #187
    • d3324c4: Add go_router tests, navbar color filter and PersistentTabConfig.noScreen (jb3rndt) #187
    • 22ee14b: Here come the tests (jb3rndt) #187
    • 69dfb76: Add tests for gesture navigation and hiding the navigation bar at runtime (jb3rndt) #187
    • 6c16f27: Format (jb3rndt) #187
    • 8199836: Update pubspec.lock (jb3rndt) #187
    • 9ee9654: Fix SwipableTabSwitchingView not disposing pages if statemanagement is disabled and add tests (jb3rndt) #187
    • 3c8fbdf: Fix focus node deposing when removing tabs at runtime (jb3rndt) #187
    • 7c8d75f: Add tests for screen transition animation (jb3rndt) #187
    • 02e0141: Refactor PageTransitionAnimation and add tests (jb3rndt) #187
    • 8d55200: Add models tests (jb3rndt) #187
    • 2d28549: Add slideUp test (jb3rndt) #187
    • 474266a: Change model test to testWidgets (jb3rndt) #187
    • 01cd3ae: Add cupertino and material page transition test (jb3rndt) #187
    • ea47e31: Add tab switching to navbar style test (jb3rndt) #187
    • 30ccb82: Add copywith tests (jb3rndt) #187
    • 33e4d3f: Add controller tests (jb3rndt) #187
    • ef2208d: Add neumorphic tests (jb3rndt) #187
    • 67197c3: Fix neumorphic test (jb3rndt) #187
    • 9c1f03d: config updates (jb3rndt)
    • 5739e59: Merge branch 'master' into v6.0.0 (jb3rndt) #187
    • bab530b: handle changing the tabs (jb3rndt) #187
    • fe5724b: fix WidgetBuilder using an old value for the index (jb3rndt) #187
    • a4a76a1: fix focus node causing unresponsiveness (jb3rndt) #187
    • cfc9cd5: update tests (jb3rndt) #187
    • 1d92ac8: Revert "handle changing the tabs" (jb3rndt) #187
    • b687853: handle adding/removing tabs better (jb3rndt) #187
    • 04f5d44: format (jb3rndt) #187
    • e19bffa: make height of nav bar styles optional (jb3rndt) #187
    • bd1c3d2: fix analyzer (jb3rndt) #187
    • 9b9aee3: make height of neumorphic navbar optional (jb3rndt) #187
    • 07d1305: fix tests (jb3rndt) #187
    • 439dde0: update test expect method (jb3rndt) #187
    • f08bee9: update readme and changelog (jb3rndt) #187
    • 4b7d3c4: udgrade flutter version (jb3rndt) #187
    • 2d4c34a: Version 6.0.0 (jb3rndt)
    Open source →
    Release notes

    Added

    • Hide the NavBar on scroll: Set hideOnScrollVelocity to x (x != 0) to make the NavBar disappear after x pixels have been scrolled (and reappear respectively)
    • SelectedTabPressConfig, which is responsible for any configuration when the selected tab is pressed again.
      • SelectedTabPressConfig.popAction allows to specify how many screens of the current tab should be popped if the tab is pressed again
      • SelectedTabPressConfig.scrollToTop enables automatically scrolling the tab content to top if the current tab is pressed again. This requires a ScrollController on each PersistentTabConfig.scrollController for each tab this should be activated for.
      • SelectedTabPressConfig.onPressed is a callback that gets executed whenever the current tab is pressed again. I also provides an argument whether there are any pages pushed to the tab.
    • Navigator function that pop all screens of the current tab: popAllScreensOfCurrentTab
    • Animated Icons: Animate the navigation bar icons by using the provided AnimatedIconWrapper (see README for more)
    • PersistentTabController now gives you access to the previousIndex

    Breaking Changes

    • Change the default of navBarOverlap to NavBarOverlap.none() (previously was NavBarOverlap.full())
    • Removed ItemConfig.opacity. Instead, set the opacity on the NavBarDecoration.color directly
    • Removed ItemConfig.filter. Use NavBarDecoration.filter instead
    • Removed default value of NavBarDecoration.filter
    • Removed selectedTabContext. Use the list of your tabs instead to get the current tab context like so: tabs[controller.index].navigatorConfig.navigatorKey.currentContext
    • Removed PersistentTabController.onIndexChanged. Use PersistentTabController.listen instead.
    • Replaced popAllScreensOnTapAnyTabs with keepNavigatorHistory. The meaning (and default value) of this parameter is thus inverted. To migrate, flip the boolean value for that parameter if you use it.
    • Combined popAllScreensOnTapOfSelectedTab and popActionScreens into the SelectedTabPressConfig.popAction.
      • Set SelectedTabPressConfig.popAction to PopActionType.all to pop all screens of the selected tab if it is pressed again
      • Set SelectedTabPressConfig.popAction to PopActionType.single to pop a single screen of the selected tab if it is pressed again
      • Set SelectedTabPressConfig.popAction to PopActionType.none to do nothing if it the selected tab pressed again
    • Replaced onSelectedTabPressWhenNoScreensPushed with SelectedTabPressConfig.onPressed. The onPressed parameter informs you whether any pages are currently pushed to that tab.
    • Removed navBarHeight parameter. Use the height parameter of each style instead if needed. height is not mandatory, so by default no specific height is set. Use kBottomNavigationBarHeight if you want the default previous behavior.

    Fixed

    • Adjusting the number of tabs at runtime threw an error
    • The state of each tab was not disposed if stateManagement was true and gestures were enabled
    Open source →
  9. 5.4.0 04 May 2025
    Release notes

    Commits

    Open source →
  10. 5.3.1 03 Oct 2024
    Release notes

    Commits

    • d074da4: Improve documentation on the historyLength (#138) (jb3rndt)
    • d1de16f: Fix opacity overriding NavBarDecoration Color (jb3rndt)
    • 0d90730: Version 5.3.1 (jb3rndt)
    Open source →
    Release notes

    Fixed

    • Improve documentation on the historyLength (https://github.com/jb3rndt/PersistentBottomNavBarV2/pull/138)
    • Fix opacity overriding NavBarDecoration color (https://github.com/jb3rndt/PersistentBottomNavBarV2/issues/181)
    Open source →
  11. 5.3.0 06 Jul 2024
    Release notes

    Fixed

    • Only dispose PersistentTabController if it is automatically created. If you pass your own, you are responsible to dispose it manually.
    • Handle popAllScreensOnTapAnyTabs correctly
    Open source →
  12. 5.2.3 24 Apr 2024
    Release notes

    Fixed

    • popAllScreensOnTapOfSelectedTab and onSelectedTabPressWhenNoScreensPushed did not work properly when an initialRoute was set for that tab
    Open source →
  13. 5.2.2 11 Apr 2024
    Release notes

    Fixed

    • NavigatorConfig.initialRoute did not get passed to the respective Navigator
    • Mark ItemConfig.color and filter as deprecated
    Open source →
  14. 5.2.1 09 Apr 2024
    Release notes

    Fixed

    • Navbar got clipped and thus didnt show a boxShadow
    Open source →
  15. 5.2.0 03 Apr 2024
    Release notes

    Changed

    • Mark onWillPop as deprecated

    Fixed

    • Navigator.copyWith didn't properly copy the navigatorKey
    • Rewrite usage of PopScope by providing canPop: true when all child navigators are clear and the initial tab is selected to the give pop control to the ancestors or correctly pop/close the app if no parent PopScope exists (thus maintaining natural PopScope behavior)
    • PopScope now just blocks popping until the initial tab is selected and the child navigator cant be popped anymore
    Open source →
  16. 5.1.0 28 Mar 2024
    Release notes

    Fixed

    • Fix deprecation of colorScheme.background
    • The Main Scaffold only extends its body if necessary (full overlap or hidden navbar) to prevent unnecessary padding (equal to navbar height)
    • Replace NavBar SlideTransition with SizeTransition to correctly report its size to the Main Scaffold
    • Pass on the source padding to the Main Scaffold Body if the navbar is hidden
    • Pass the source viewPadding if navbar is hidden and the new body padding of the Main Scaffold as a new viewPadding to the tabs to ensure better placement of FABs on individual screens
    • Prevent Navbar jumping when keyboard opens because the keyboard consumes the MediaQuery.padding.bottom
    • Prevent Navbar jumping when keyboard opens because the keyboard consumes the MediaQuery.padding.bottom
    • Fix tabs overlaying each other if no transition animation should be shown
    Open source →
  17. 5.0.0 13 Mar 2024
    Release notes

    Added

    • Easier and less error-prone usage api (MIGRATION GUIDE)
    • Support for go_router
    • Change the tab by sliding left/right (if enabled)

    Fixed

    • A ton of internal improvements
    Open source →
  18. 5.0.0-beta.10 13 Mar 2024 pre-release
    Release notes

    Changed

    • Rename ItemConfig color attributes

    Fixed

    • Make PersistentTabConfig.noScreen onPressed mandatory
    Open source →
  19. 5.0.0-beta.9 04 Mar 2024 pre-release

    Nothing published for this version

  20. 5.0.0-beta.8 15 Jan 2024 pre-release
    Release notes

    Fixed

    • Make ItemConfig inactiveIcon of Type Widget
    Open source →
  21. 5.0.0-beta.7 06 Dec 2023 pre-release
    Release notes

    Fixed

    • Upgrade go_router to 12.1.1
    • Make page switching transition rtl compatible
    • Fix _animation not initialized error
    • Switching tabs without stateManagement caused re-initializations of all loaded pages
    Open source →
  22. 5.0.0-beta.6 12 Sep 2023 pre-release
    Release notes

    Added

    • Add animatedTabBuilder to customize the transition when switching tabs
    • Support for Router API

    Fixed

    • Tab slide animation no longer shows intermediate tabs in the slide animation when switching to non adjacent tabs
    Open source →
  23. 5.0.0-beta.5 27 Feb 2023 pre-release
    Release notes

    Added

    • Tab history when using android back button

    Fixed

    • ScreenTransitionAnimation with Duration.zero was throwing an error in the animation phase

    Removed

    • Remove unused attribute _animateTabTransition on ScreenTransitionAnimation
    Open source →
  24. 5.0.0-beta.4 12 Feb 2023 pre-release
    Release notes

    Added

    • Support drawerEdgeDragWidth
    Open source →
  25. 5.0.0-beta.3 12 Feb 2023 pre-release
    Release notes

    Added

    • A drawer can be passed to the PersistentTabView to be usable in every tab

    Changed

    • Renamed ItemAnimationProperties to ItemAnimation
    • Made ScreenTransitionAnimation.animateTabTransition private
    • Improved Example
    Open source →
  26. 5.0.0-beta.2 28 Nov 2022 pre-release
    Release notes

    Fixed

    • Migration Guide Link in the Readme
    Open source →
  27. 5.0.0-beta.1 19 Nov 2022 pre-release
    Release notes

    Breaking Changes

    • itemAnimationProperties, neumorphicProperties and navBarDecoration now have to be applied to the NavBar Widget directly
    • navBarStyle now is a widget builder which also allows to pass a custom Widget instead of only the predefined ones
    • Remove PersistenTabView.custom (use PersistentTabView instead) constructor
    • Make items primary color the title and icon color and secondary the background color
    • backgroundColor now changes the color of the background
    • NavBarOverlap replaces the buttomScreenMargin

    Changed

    • Remove PersistentTabViewBase
    • Replace CupertinoPageScaffold with Scaffold
    • Trimmed the styles
    • Make inactiveIcon default to icon globally
    • Tabs Navigators inherit the settings of the root Navigator
    • Make null-safety safer
    Open source →
  28. 4.2.8 27 Mar 2023
    Release notes

    Fixed

    • Remove label padding in simple style
    • Check if context is non-null before popping all screens
    Open source →
  29. 4.2.6 30 Oct 2022
    Release notes

    Fixed

    • Fix text color issues with style 3
    Open source →
  30. 4.2.5 16 Aug 2022
    Release notes

    Fixed

    • Fix cast error when using onWillPop with handleAndroidBackButtonPress: false
    Open source →
  31. 4.2.4 01 Jul 2022
    Release notes

    Fixed

    • Using bottom item TextStyle on style3 caused cast error
    Open source →
  32. 4.2.3 03 Jun 2022
    Release notes

    Fixed

    • selectedTabScreenContext returned a wrong context after visiting the tabs the first time
    Open source →
  33. 4.2.2 31 May 2022
    Release notes

    Fixed

    • Using one border side in NavbarDecoration caused an error (see #21)
    Open source →
  34. 4.2.1 29 May 2022
    Release notes

    Added

    • Add basic tests

    Fixed

    • Change NavBarPadding.fromLTRB to use correct order
    Open source →
  35. 4.2.0 23 May 2022
    Release notes

    Changed

    • Fixed bug where the NavigatorObservers of a custom PersistenTabView threw errors when switching to another tab
    • Fixed using the correct navigatorKeys for the correct tab
    • Breaking Change: The CustomWidgetRouteAndNavigatorSettings.navigatorObservers are now a list of lists of NavigatorObservers, so each tab has its own list of NavigatorObervers. See the attribute for more information and an example
    Open source →
  36. 4.1.11 13 May 2022
    Release notes

    Changed

    • Support Flutter 3.0.0 without triggering warnings (see _ambiguate function for more)
    Open source →
  37. 4.1.10 25 Apr 2022
    Release notes

    Changed

    • Remove label top padding in most styles because it broke layout for custom image icons (see #20)
    Open source →
  38. 4.1.9 02 Apr 2022
    Release notes

    Changed

    • Add navBarHeight to PersistentTabView.custom
    Open source →
  39. 4.1.8 19 Mar 2022
    Release notes

    Fixed

    • Fix animation repeating when dependencies change
    Open source →
  40. 4.1.7 19 Mar 2022
    Release notes

    Added

    • Re-add example
    • Add more documentation
    Open source →
  41. 4.1.6 18 Mar 2022
    Release notes

    Fixed

    • Fixed empty tabs when fastly switching tabs with animations enabled
    Open source →
  42. 4.1.5 17 Mar 2022
    Release notes

    Fixed

    • Fix issue with navbarDecoration.borderRadius being null but expected to not be null by styles 15 and 16
    Open source →
  43. 4.1.4 17 Mar 2022
    Release notes

    Added

    • Adding interactive example

    Changed

    • PersistentTabView.custom passes hideNavigationBarWhenKeyboardShows to super
    • Breaking resizeToAvoidBottomInset defaults to true as per docs

    Fixed

    • hideNavigationBarWhenKeyboardShows no longer depends on resizeToAvoidBottomInset to work properly
    Open source →
  44. 4.1.3 05 Mar 2022
    Release notes

    Fixed

    • Respect background color config in navbar
    Open source →
  45. 4.1.2 02 Mar 2022
    Release notes

    Fixed

    • Remove old debugging print
    Open source →
  46. 4.1.1 20 Jan 2022
    Release notes

    Fixed

    • Hotfix for popAllScreensOnTapOfSelectedTab of PersistentTabView.custom
    • PersistentTabView.custom now also needs the items
    • You have to call navBarEssentials.onItemSelected(index) to trigger navigator stack clearing
    • Breaking: customWidget now is a builder that receives navBarEssentials
    • Breaking: To make popAllScreensOnTapOfSelectedTab work, specify your onItemSelected function of the CustomWidget like this:
    Open source →
  47. 4.1.0 20 Jan 2022
    Release notes

    Added

    • PersistentTabView.custom now supports popAllScreensOnTapOfSelectedTab

    Fixed

    • Breaking: CutsomWidgetRouteAndNavigatorSettings got renamed to CustomWidgetRouteAndNavigatorSettings
    Open source →
  48. 4.0.3 20 Jan 2022
    Release notes

    Changed

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive