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.
-
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
-
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
TabData- Added the
tooltipproperty.
- Added the
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.
- Bugfix
- Tab width doesn't grow to fit the new title set by
TabData.text.
- Tab width doesn't grow to fit the new title set by
TabData- Added the ability to override tab themes.
TabbedView- Providing
TabDataintabCloseInterceptor. - Adding
dragScopefor drag rejection.
- Providing
- Added support for asynchronous tab close interception in `TabCloseInterceptor.
- Bugfix
- Error setting text size
- Allows you to define a maximum width for the tab text.
- Bugfix
- Fields in hidden tabs continue to receive focus when pressing TAB.
- 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.
- 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:
- 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
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())));
});- Removing the use of deprecated constructor.
- Tab leading widget
- Adding properties
TabbedView.tabsAreaVisibleTabsAreaThemeData.visibleContentAreaThemeData.decorationNoTabsArea
- Bugfix
- Implementing
hashCodeand==of the theme data.
- Implementing
- Stopping using deprecated
hashValuesmethod.
- Renaming
MenuThemeDatatoTabbedViewMenuThemeData- Avoiding conflict with next Flutter version.
- Formatting code.
- Adding interceptor for tab selection.
- Adding
getTabByIndexmethod inTabbedViewController. - Allowing update the following
TabDataproperties:buttons,closable,content,textandvalue.
- 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
- Removing unused argument
normalStatusfromTabThemeData. paddingWithoutButtonsetting inTabThemeDataandTabStatusThemeData
- Removing unnecessary imports
- 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
- 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
- README update
- 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
TabButtonpadding
- 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
OnTabClosingtypedef renamed toTabCloseInterceptor- Added
OnTabClosetypedef
- API changes
TabbedViewThemerefactored to be a widget following the same pattern used by Flutter'sTheme- Old theme classes have been renamed
TabbedViewThemetoTabbedViewThemeDataTabsAreaThemetoTabsAreaThemeDataContentAreaThemetoContentAreaThemeDataMenuThemetoMenuThemeDataButtonsAreaThemetoButtonsAreaThemeDataTabThemetoTabThemeDataTabStatusThemetoTabStatusThemeData
- Bug fix
- Tabs area overflow
- Feature for clipping tab content
- Bug fix
- Tab area without performing the layout after tab selection
- Bug fix
- Tabs area overflow
- Added
keepAliveparameter to prevent loss of tab content state due to tree change during tab selection event.
- Bug fix
- Overlap between tabs and button area
- Class name has been fixed (how embarrassing)
TabbedWiewhas been renamed toTabbedView
- README update
- Draggable tab builder
- Bug fix
- Divisor between tabs and content starting drawing at wrong offset
- README update
- README update
- Final version
- Tabs area buttons builder
- Theme changes
lighttheme has been renamed toclassictheme
- Theme changes
- Theme changes
- Documentation
- Menu builder
TabbedWiewModelhas been changed toTabbedWiewController
- API has been changed to simplify changing themes
- Theme changes
- New themes
- First version
- Package creation