tabbed_view
Flutter widget inspired by the classic Desktop-style tab component. Supports customizable themes.
3.1.0
3.1K downloads/mo
#4619 most downloaded on pub.dev
caduandrade/tabbed_view
What this package is like to depend on
Last release 4 months ago
07 Apr 2026
Release timing varies
gaps range from 2 weeks to 1.1 years
Nearly every release is documented
notes for 50 of 50 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
64 releases · first in 2021
17 releases in the last 12 months
see the full history below
Release timeline
64 releases · Mar 2021 to Apr 2026Releases
latest 60 of 64-
3.1.007 Apr 2026Release notes
Open source →TabData- Added
listenableandtextProviderfor reactive UI updates. - Added
labelBuilderto allow custom label widget creation instead of using the internally generated widget fromtext.
- Added
TabsAreaThemeData- Added
paddingproperty. - Added
lastVisibleTabBehaviorto configure how the last remaining tab behaves when there is no space available.
- Added
LastVisibleTabBehavior- New enum with two modes: hide (moves the tab to the overflow menu) and shrink (keeps the tab visible by reducing its width).
- Bugfix
TabsAreaCrossAxisAlignment- Enum was not exported.
-
3.0.023 Mar 2026Release notes
Open source →-
OnTabSelection parameter change. #68
-
Replacing the use of the controller with a delegate within the widgets.
-
Declarative callbacks. #68
-
Reorder action #68
-
Simplifying the delegate. #68
-
Fixing imports. #68
-
Selection action. #68
-
Changing default minimalist theme padding. #68
-
Selected tab getter. #68
-
Creating an isolated class for the delegate. #68
-
Removing controller property from TabbedView. #68
-
Updating doc. #68
-
Separating the drag action into 3 callbacks. #68
-
Using TabData itself in viewBuilder. #68
-
Clearing the example. #68
-
Removing wrong class hide. #68
-
Updating CHANGELOG version. #68
-
Renaming content to view. #68
-
Updating CHANGELOG version. #68
-
Using the TabData reference in the declarative constructor callbacks.
-
Renaming normal TabStatus value to unselected. #68
-
Version 3.0.0 #68
-
Formating. #68
Release notes
Open source →-
TabDecoration- Added support for custom tab shape.
-
TabbedViewThemeData- Added a new predefined theme:
folder.
- Added a new predefined theme:
-
TabThemeData- Added a
maxLinesparameter to allow text wrapping in tab labels, specifically designed to work in conjunction withmaxMainSizeconstraints.
- Added a
-
TabStyleResolver- Added to provides per-tab style overrides on top of a
TabThemeData. - Added support for changing the tab background color in some predefined themes.
- Added to provides per-tab style overrides on top of a
-
TabbedView- Added
TabbedView.declarativeconstructor for declarative (external state) usage.
- Added
Breaking Changes
-
TabbedView- Renamed
contentBuilderproperty toviewBuilder.- Updated property type from
IndexedWidgetBuildertoTabViewBuilder. - Now receives
TabDatainstead of tab index.
- Updated property type from
- Renamed
-
TabData- Added required
idproperty to uniquely identify tabs. - Hid
keyanduniqueKeyproperties from the public API. - Updated
valueproperty type fromdynamictoObject?. - Renamed
contentproperty toview. - Per-tab styling overrides have been moved from
TabDatatoTabThemeData.- The following properties were removed from
TabData:normalStatusThemeselectedStatusThemehoveredStatusTheme
- The following properties were removed from
- Added required
-
TabStatus- Renamed
normalvalue tounselected.
- Renamed
-
TabDecorationBuilder- Replaced
TabStatusparameter withTabStyleContext.
- Replaced
-
OnDraggableBuild- Removed
controllerparameter.
- Removed
-
CanDrop- Removed
targetparameter.
- Removed
-
OnBeforeDropAccept- Removed
targetparameter.
- Removed
-
OnTabSelection- Renamed to
OnTabSelected. - Updated callback signature from
(int? tabIndex, TabData? tabData)to(TabSelection? selection).
- Renamed to
-
OnTabRemove- Renamed to
OnTabRemoved.
- Renamed to
-
OnTabReorder- Renamed to
OnTabMoved.
- Renamed to
-
TabbedViewController- Renamed
onTabSelectionproperty toonTabSelected. - Renamed
onTabRemoveproperty toonTabRemoved. - Renamed
onTabReorderproperty toonTabReordered.
- Renamed
-
DraggableData- Renamed to
DraggableTabData. - Removed
controllerproperty. - Renamed
tabDataproperty totab.
- Renamed to
-
-
3.0.0-rc.322 Mar 2026 pre-releaseNothing published for this version
-
3.0.0-rc.222 Mar 2026 pre-releaseNothing published for this version
-
3.0.0-rc.122 Mar 2026 pre-releaseNothing published for this version
-
2.1.021 Dec 2025 -
2.0.016 Sep 2025Release notes
Open source →TabbedView- Removed the
hiddenTabsMenuItemBuilderproperty. - Removed the
tabSelectInterceptorproperty.
- Removed the
TabbedViewController- Moved
reorderEnableproperty toTabbedView. - Moved
onReorderproperty toTabbedView. - New methods:
selectTab(TabData tab)getTabByValue(dynamic value)selectTabByValue(dynamic value)
- Moved
TabStatus- Renamed
highlightedvalue tohovered.
- Renamed
TabData- Renamed and refactored
buttonsproperty tobuttonsBuilderto use the builder pattern.
- Renamed and refactored
TabButton- The constructor was replaced by two separate constructors:
TabButton.iconandTabButton.menu.
- The constructor was replaced by two separate constructors:
TabRemoveInterceptor- ̀Added the
BuildContextparameter.
- ̀Added the
OnTabSelection- ̀Added the
tabDataparameter.
- ̀Added the
- Theme
- Refactored theming system to fully support all tab bar positions (
top,bottom,left,right).- Added
TabBarPositionenum to represent the bar positions. - Added
SideTabsLayoutto define how side-positioned tabs (left or right) are laid out (rotated or stacked).
- Added
- Renamed
Mobiletheme toUnderline - Removed
Darktheme. - Added brightness support.
- The theme data classes are now mutable.
TabbedViewThemeData- New properties:
divider: The border that separates the content area from the tab bar.
- New properties:
TabsAreaThemeData- Renamed
normalButtonColorproperty tobuttonColor. - Renamed
hoverButtonColorproperty tohoveredButtonColor. - Renamed
hoverButtonBackgroundproperty tohoveredButtonBackground. - Allowed null
hoveredButtonColorto inherit default color. - New properties:
crossAxisFit: Defines how the cross axis will fit within the tabs area.crossAxisAlignment: Defines the alignment of tabs in relation to the main content.tabHeaderExtentSize: Defines how tab headers are sized relative to each other along their extent.
- Removed properties:
gapBottomBordergapSideBorder̀
- Renamed
TabStatusThemeData- Renamed
normalButtonColorproperty tobuttonColor. - Renamed
hoverButtonBackgroundproperty tohoveredButtonBackground.
- Renamed
TabThemeData- Renamed
highlightedStatusproperty tohoveredStatus. - Renamed
normalButtonColorproperty tobuttonColor. - Renamed
hoverButtonColorproperty tohoveredButtonColor. - Renamed
hoverButtonBackgroundproperty tohoveredButtonBackground. - Allowed null
hoveredButtonColorto inherit default color.
- Renamed
TabThemeDataandTabStatusThemeData- Removed properties:
innerBottomBorderinnerTopBorderdecorationmargin
- New properties:
decorationBuilder: A builder for creating complex and composable tab decorators.maxMainSize: The maximum main size of the tab.sideTabsLayout: Define how side-positioned tabs (left or right) are laid out.
- Removed properties:
ContentAreaThemeData- New properties:
border: The border around the outer side of the tab content area, excluding the side adjacent to the tabs.borderRadius: The radius used to round the corners.
- New properties:
- Replaced
HiddenTabsMenuThemeDatawithTabbedViewMenuThemeData.
- Refactored theming system to fully support all tab bar positions (
- Special thanks to Patrick Legacy for his great contributions to this release.
-
2.0.0-rc.1116 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.1015 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.914 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.812 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.706 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.601 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.501 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.401 Sep 2025 pre-releaseNothing published for this version
-
2.0.0-rc.329 Aug 2025 pre-releaseNothing published for this version
-
2.0.0-rc.229 Aug 2025 pre-releaseNothing published for this version
-
2.0.0-rc.129 Aug 2025 pre-releaseNothing published for this version
-
1.22.122 Aug 2025 -
1.22.015 Aug 2025 -
1.21.020 Jun 2025Release notes
Open source →TabbedView- Providing
TabDataintabCloseInterceptor. - Adding
dragScopefor drag rejection.
- Providing
-
1.20.025 May 2025Release notes
Open source →- Added support for asynchronous tab close interception in `TabCloseInterceptor.
-
1.19.126 Oct 2024 -
1.19.026 Oct 2024 -
1.18.126 Oct 2024Release notes
Open source →- Bugfix
- Fields in hidden tabs continue to receive focus when pressing TAB.
- Bugfix
-
1.18.008 Sep 2023Release notes
Open source →- Highlighting the tab's drop position.
- Allow dragging to reorder tabs to the last position.
- Allow dragging tabs between different
TabbedViewinstances. - Bugfix
- Incorrect state for the index of the highlighted tab after being closed.
Changes
- Change in the signature of
OnDraggableBuild.- From:
(int tabIndex, TabData tabData) - To:
(TabbedViewController controller, int tabIndex, TabData tabData)
- From:
Draggablewill always beDraggableDatatype:Draggable<DraggableData>TabsAreaThemeData- New property:
dropColor.
- New property:
-
1.17.019 May 2023Release notes
Open source →- Tab reordering
TabbedViewController- New methods
setTabsreorderTabselectedTab
- New property:
reorderEnable
- New methods
- New callback:
OnReorder TabThemeData- New properties
draggingDecorationdraggingOpacity
- New properties
TabData- New property:
draggable
- New property:
- New class:
DraggableConfig - New typedef:
OnDraggableBuild TabbedView- The
draggableTabBuilderhas been replaced byonDraggableBuild- Automatic creation of a
Draggable<TabData>
- Automatic creation of a
- The
TabData- The
uniqueKeyproperty has been renamed tokey.
- The
- Minimum sdk version required: 2.19.0
Migrating custom drag feedback
From:
TabbedView tabbedView = TabbedView( controller: _controller, draggableTabBuilder: (int tabIndex, TabData tab, Widget tabWidget) { return Draggable<String>( child: tabWidget, feedback: Material( child: Container( child: Text(tab.text), padding: EdgeInsets.all(4), decoration: BoxDecoration(border: Border.all()))), data: tab.text, dragAnchorStrategy: (Draggable<Object> draggable, BuildContext context, Offset position) { return Offset.zero; }); });To:
TabbedView tabbedView = TabbedView( controller: _controller, onDraggableBuild: (int tabIndex, TabData tabData) { return DraggableConfig( feedback: Container( child: Text(tabData.text), padding: EdgeInsets.all(4), decoration: BoxDecoration(border: Border.all()))); }); -
1.16.016 Jan 2023 -
1.16.0+129 Jan 2023 -
1.15.020 Nov 2022Release notes
Open source →- Adding properties
TabbedView.tabsAreaVisibleTabsAreaThemeData.visibleContentAreaThemeData.decorationNoTabsArea
- Bugfix
- Implementing
hashCodeand==of the theme data.
- Implementing
- Adding properties
-
1.14.003 Oct 2022Release notes
Open source →- Renaming
MenuThemeDatatoTabbedViewMenuThemeData- Avoiding conflict with next Flutter version.
- Renaming
-
1.14.0+130 Oct 2022 -
1.13.008 May 2022 -
1.13.0+125 May 2022 -
1.12.018 Mar 2022Release notes
Open source →- Adding
getTabByIndexmethod inTabbedViewController. - Allowing update the following
TabDataproperties:buttons,closable,content,textandvalue.
- Adding
-
1.11.113 Mar 2022Release notes
Open source →- Bugfix
- Removing theme settings values equal to inherited ones
- Mobile theme
tab.highlightedStatus.decorationtab.selectedStatus.decoration
- Mobile theme
- Removing theme settings values equal to inherited ones
- Bugfix
-
1.11.006 Mar 2022Release notes
Open source →- Removing unused argument
normalStatusfromTabThemeData. paddingWithoutButtonsetting inTabThemeDataandTabStatusThemeData
- Removing unused argument
-
1.10.026 Sep 2021Release notes
Open source →- API change
ButtonColorshas been split intonormalButtonColor,hoverButtonColoranddisabledButtonColor- New buttons theme configurations:
buttonPadding,normalButtonBackground,hoverButtonBackgroundanddisabledButtonBackground
- Default themes have been changed to use buttons decoration
- Bug fix
- Selected tab not being painted on top
- Changed mouse cursor over selected tab
- API change
-
1.10.0+110 Feb 2022 -
1.9.029 Aug 2021Release notes
Open source →- Padding added to path icons to conform to Material Design standards
- Gap of the buttons removed from the default themes
- API change
IconProviderto hold anIconPathor anIconDatain the themes andTabButton
- Padding added to path icons to conform to Material Design standards
-
1.8.029 Aug 2021Release notes
Open source →- New icons
- Default themes adjustments, such as gaps and paddings
buttonsGapsetting inTabsAreaThemeDataIconPathto be used in icons drawingiconSizesetting inTabButton- API changes
minimalIconSizeanddefaultIconSizeconstants moved fromTabbedViewThemeDatatoTabbedViewThemeConstantsButtonsAreaThemeDataproperties moved toTabsAreaThemeDataTabButtoniconparameter renamed toiconData
TabsAreaThemeDatacloseButtonIconrenamed tocloseIconDatahiddenTabsMenuButtonIconrenamed tomenuIconDatatabproperty moved toTabbedViewThemeDatacloseIconDataproperty moved toTabThemeDatacloseIconPathproperty moved toTabThemeData
-
1.8.0+129 Aug 2021 -
1.7.023 Aug 2021 -
1.6.020 Aug 2021Release notes
Open source →- API changes
menuBuilderhas been removed fromTabbedViewController
- Bug fix
- Error building menu with empty list of
TabbedViewMenuItem
- Error building menu with empty list of
- API changes
-
1.5.019 Aug 2021Release notes
Open source →- API changes
OnTabClosingtypedef renamed toTabCloseInterceptor- Added
OnTabClosetypedef
- API changes
-
1.4.018 Aug 2021Release notes
Open source →- API changes
TabbedViewThemerefactored to be a widget following the same pattern used by Flutter'sTheme- Old theme classes have been renamed
TabbedViewThemetoTabbedViewThemeDataTabsAreaThemetoTabsAreaThemeDataContentAreaThemetoContentAreaThemeDataMenuThemetoMenuThemeDataButtonsAreaThemetoButtonsAreaThemeDataTabThemetoTabThemeDataTabStatusThemetoTabStatusThemeData
- API changes
-
1.3.114 Aug 2021 -
1.3.014 Aug 2021Release notes
Open source →- Feature for clipping tab content
- Bug fix
- Tab area without performing the layout after tab selection
-
1.2.113 Aug 2021 -
1.2.008 Aug 2021Release notes
Open source →- Added
keepAliveparameter to prevent loss of tab content state due to tree change during tab selection event.
- Added
-
1.1.206 Aug 2021 -
1.1.127 Jul 2021Release notes
Open source →- Class name has been fixed (how embarrassing)
TabbedWiewhas been renamed toTabbedView
- Class name has been fixed (how embarrassing)
-
1.1.024 Jun 2021Release notes
Open source →- Draggable tab builder
- Bug fix
- Divisor between tabs and content starting drawing at wrong offset
-
1.1.0+124 Jun 2021 -
1.0.024 Apr 2021 -
1.0.0+108 May 2021 -
1.0.0+220 Jun 2021 -
0.7.018 Apr 2021Release notes
Open source →- Tabs area buttons builder
- Theme changes
lighttheme has been renamed toclassictheme
-
0.6.011 Apr 2021 -
0.5.010 Apr 2021Release notes
Open source →- Theme changes
- Documentation
- Menu builder
TabbedWiewModelhas been changed toTabbedWiewController