Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion package/lib/src/controls/tabs.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:convert';

import 'package:flet/src/utils/alignment.dart';
import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart';

Expand Down Expand Up @@ -136,9 +137,14 @@ class _TabsControlState extends State<TabsControl>

var indicatorTabSize = widget.control.attrBool("indicatorTabSize");

var isScrollable = widget.control.attrBool("scrollable", true)!;
var tabAlignment = parseTabAlignment(widget.control, "tabAlignment",
isScrollable ? TabAlignment.start : TabAlignment.fill);

var tabBar = TabBar(
tabAlignment: tabAlignment,
controller: _tabController,
isScrollable: widget.control.attrBool("scrollable", true)!,
isScrollable: isScrollable,
dividerColor:
HexColor.fromString(Theme.of(context), widget.control.attrString("dividerColor", "")!) ??
TabBarTheme.of(context).dividerColor,
Expand Down
11 changes: 10 additions & 1 deletion package/lib/src/utils/alignment.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:convert';

import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';

import '../models/control.dart';
import 'numbers.dart';
Expand All @@ -23,6 +23,15 @@ CrossAxisAlignment parseCrossAxisAlignment(
orElse: () => defValue);
}

TabAlignment parseTabAlignment(
Control control, String propName, TabAlignment defValue) {
return TabAlignment.values.firstWhere(
(e) =>
e.name.toLowerCase() ==
control.attrString(propName, "")!.toLowerCase(),
orElse: () => defValue);
}

WrapAlignment parseWrapAlignment(
Control control, String propName, WrapAlignment defValue) {
return WrapAlignment.values.firstWhere(
Expand Down
1 change: 1 addition & 0 deletions sdk/python/packages/flet-core/src/flet_core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@
PaddingValue,
PageDesignLanguage,
ScrollMode,
TabAlignment,
TextAlign,
ThemeMode,
)
Expand Down
13 changes: 13 additions & 0 deletions sdk/python/packages/flet-core/src/flet_core/tabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
ResponsiveNumber,
RotateValue,
ScaleValue,
TabAlignment,
)


Expand Down Expand Up @@ -162,6 +163,7 @@ def __init__(
tabs: Optional[List[Tab]] = None,
selected_index: Optional[int] = None,
scrollable: Optional[bool] = None,
tab_alignment: Optional[TabAlignment] = None,
animation_duration: Optional[int] = None,
divider_color: Optional[str] = None,
indicator_color: Optional[str] = None,
Expand Down Expand Up @@ -206,6 +208,7 @@ def __init__(
self.tabs = tabs
self.selected_index = selected_index
self.scrollable = scrollable
self.tab_alignment = tab_alignment
self.animation_duration = animation_duration
self.divider_color = divider_color
self.label_color = label_color
Expand Down Expand Up @@ -267,6 +270,16 @@ def scrollable(self) -> Optional[bool]:
def scrollable(self, value: Optional[bool]):
self._set_attr("scrollable", value)

# tab_alignment
@property
def tab_alignment(self) -> Optional[TabAlignment]:
return self.__tab_alignment

@tab_alignment.setter
def tab_alignment(self, value: Optional[TabAlignment]):
self.__tab_alignment = value
self._set_attr("tabAlignment", value.value if value is not None else None)

# animation_duration
@property
def animation_duration(self) -> Optional[int]:
Expand Down
8 changes: 8 additions & 0 deletions sdk/python/packages/flet-core/src/flet_core/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,14 @@ class CrossAxisAlignment(Enum):
BASELINE = "baseline"


class TabAlignment(Enum):
NONE = None
START = "start"
START_OFFSET = "startOffset"
FILL = "fill"
CENTER = "center"


LabelPositionString = Literal[None, "right", "left"]


Expand Down