tabbed_view 3.1.0
tabbed_view: ^3.1.0 copied to clipboard
Flutter widget inspired by the classic Desktop-style tab component. Supports customizable themes.
3.1.0 #
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.0 #
-
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
2.1.0 #
TabData- Added the
tooltipproperty.
- Added the
2.0.0 #
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.
1.22.1 #
- 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
1.22.0 #
TabData- Added the ability to override tab themes.
1.21.0 #
TabbedView- Providing
TabDataintabCloseInterceptor. - Adding
dragScopefor drag rejection.
- Providing
1.20.0 #
- Added support for asynchronous tab close interception in `TabCloseInterceptor.
1.19.1 #
- Bugfix
- Error setting text size
1.19.0 #
- Allows you to define a maximum width for the tab text.
1.18.1 #
- Bugfix
- Fields in hidden tabs continue to receive focus when pressing TAB.
1.18.0 #
- 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.0 #
- 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.0+1 #
- Removing the use of deprecated constructor.
1.16.0 #
- Tab leading widget
1.15.0 #
- Adding properties
TabbedView.tabsAreaVisibleTabsAreaThemeData.visibleContentAreaThemeData.decorationNoTabsArea
- Bugfix
- Implementing
hashCodeand==of the theme data.
- Implementing
1.14.0+1 #
- Stopping using deprecated
hashValuesmethod.
1.14.0 #
- Renaming
MenuThemeDatatoTabbedViewMenuThemeData- Avoiding conflict with next Flutter version.
1.13.0+1 #
- Formatting code.
1.13.0 #
- Adding interceptor for tab selection.
1.12.0 #
- Adding
getTabByIndexmethod inTabbedViewController. - Allowing update the following
TabDataproperties:buttons,closable,content,textandvalue.
1.11.1 #
- 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
1.11.0 #
- Removing unused argument
normalStatusfromTabThemeData. paddingWithoutButtonsetting inTabThemeDataandTabStatusThemeData
1.10.0+1 #
- Removing unnecessary imports
1.10.0 #
- 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
1.9.0 #
- 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
1.8.0+1 #
- README update
1.8.0 #
- 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.7.0 #
TabButtonpadding
1.6.0 #
- API changes
menuBuilderhas been removed fromTabbedViewController
- Bug fix
- Error building menu with empty list of
TabbedViewMenuItem
- Error building menu with empty list of
1.5.0 #
- API changes
OnTabClosingtypedef renamed toTabCloseInterceptor- Added
OnTabClosetypedef
1.4.0 #
- API changes
TabbedViewThemerefactored to be a widget following the same pattern used by Flutter'sTheme- Old theme classes have been renamed
TabbedViewThemetoTabbedViewThemeDataTabsAreaThemetoTabsAreaThemeDataContentAreaThemetoContentAreaThemeDataMenuThemetoMenuThemeDataButtonsAreaThemetoButtonsAreaThemeDataTabThemetoTabThemeDataTabStatusThemetoTabStatusThemeData
1.3.1 #
- Bug fix
- Tabs area overflow
1.3.0 #
- Feature for clipping tab content
- Bug fix
- Tab area without performing the layout after tab selection
1.2.1 #
- Bug fix
- Tabs area overflow
1.2.0 #
- Added
keepAliveparameter to prevent loss of tab content state due to tree change during tab selection event.
1.1.2 #
- Bug fix
- Overlap between tabs and button area
1.1.1 #
- Class name has been fixed (how embarrassing)
TabbedWiewhas been renamed toTabbedView
1.1.0+1 #
- README update
1.1.0 #
- Draggable tab builder
- Bug fix
- Divisor between tabs and content starting drawing at wrong offset
1.0.0+2 #
- README update
1.0.0+1 #
- README update
1.0.0 #
- Final version
0.7.0 #
- Tabs area buttons builder
- Theme changes
lighttheme has been renamed toclassictheme
0.6.0 #
- Theme changes
0.5.0 #
- Theme changes
- Documentation
- Menu builder
TabbedWiewModelhas been changed toTabbedWiewController
0.4.0 #
- API has been changed to simplify changing themes
0.3.0 #
- Theme changes
- New themes
0.2.0 #
- First version
0.1.0 #
- Package creation
