From e55b0ad50c4529c7d03cb2855daf9c6f66a50279 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Thu, 2 Nov 2023 12:31:15 -0700 Subject: [PATCH 01/11] Badge initial commit --- package/lib/src/controls/badge.dart | 37 +++++++++++ package/lib/src/controls/create_control.dart | 4 ++ .../flet-core/src/flet_core/__init__.py | 1 + .../packages/flet-core/src/flet_core/badge.py | 62 +++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 package/lib/src/controls/badge.dart create mode 100644 sdk/python/packages/flet-core/src/flet_core/badge.py diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart new file mode 100644 index 000000000..891973e5f --- /dev/null +++ b/package/lib/src/controls/badge.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; + +import '../models/control.dart'; +import '../utils/colors.dart'; +import 'create_control.dart'; + +class BadgeControl extends StatelessWidget { + final Control? parent; + final Control control; + + const BadgeControl({Key? key, required this.parent, required this.control}) + : super(key: key); + + @override + Widget build(BuildContext context) { + debugPrint("Badge build: ${control.id}"); + + //var height = control.attrDouble("height"); + //var thickness = control.attrDouble("thickness"); + //var color = HexColor.fromString( + // Theme.of(context), control.attrString("color", "")!); + + return baseControl( + context, + // Divider( + // height: height, + // thickness: thickness, + // color: color, + // ), + Badge( + child: Text("Badge"), + label: Text('10'), + ), + parent, + control); + } +} diff --git a/package/lib/src/controls/create_control.dart b/package/lib/src/controls/create_control.dart index 7c11c0acc..ef65d4618 100644 --- a/package/lib/src/controls/create_control.dart +++ b/package/lib/src/controls/create_control.dart @@ -76,6 +76,7 @@ import 'transparent_pointer.dart'; import 'vertical_divider.dart'; import 'window_drag_area.dart'; import 'range_slider.dart'; +import 'badge.dart'; Widget createControl(Control? parent, String id, bool parentDisabled, {Widget? nextChild}) { @@ -194,6 +195,9 @@ Widget createWidget(Key? key, ControlViewModel controlView, Control? parent, case "divider": return DividerControl( key: key, parent: parent, control: controlView.control); + case "badge": + return BadgeControl( + key: key, parent: parent, control: controlView.control); case "clipboard": return ClipboardControl( parent: parent, control: controlView.control, nextChild: nextChild); diff --git a/sdk/python/packages/flet-core/src/flet_core/__init__.py b/sdk/python/packages/flet-core/src/flet_core/__init__.py index 44cfdc762..1fd981e8d 100644 --- a/sdk/python/packages/flet-core/src/flet_core/__init__.py +++ b/sdk/python/packages/flet-core/src/flet_core/__init__.py @@ -205,3 +205,4 @@ from flet_core.view import View from flet_core.window_drag_area import WindowDragArea from flet_core.range_slider import RangeSlider +from flet_core.badge import Badge diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py new file mode 100644 index 000000000..c7199b64d --- /dev/null +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -0,0 +1,62 @@ +from typing import Any, Optional + +from flet_core.control import Control, OptionalNumber +from flet_core.ref import Ref + + +class Badge(Control): + """ + A Material Design "badge". + + Badges are used to show notifications, counts, or status information on navigation items such as NavigationBar or NavigationRail destinations + or a button's icon. + + Example: + ``` + + + ``` + + ----- + + Online docs: https://flet.dev/docs/controls/badge + """ + + def __init__( + self, + ref: Optional[Ref] = None, + opacity: OptionalNumber = None, + visible: Optional[bool] = None, + data: Any = None, + # + # Specific + # + # height: OptionalNumber = None, + # thickness: OptionalNumber = None, + # color: Optional[str] = None, + label: Optional[str] = None, + ): + Control.__init__( + self, + ref=ref, + opacity=opacity, + visible=visible, + data=data, + ) + + # self.height = height + # self.thickness = thickness + # self.color = color + self.label = label + + def _get_control_name(self): + return "badge" + + # label + @property + def label(self) -> Optional[str]: + return self._get_attr("label") + + @label.setter + def label(self, value: Optional[str]): + self._set_attr("label", value) From 19474a7ae8d2a4260d5abec30114dddca5164731 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Thu, 2 Nov 2023 13:27:45 -0700 Subject: [PATCH 02/11] label and content properties --- package/lib/src/controls/badge.dart | 30 ++++++++++++++----- package/lib/src/controls/create_control.dart | 7 ++++- .../packages/flet-core/src/flet_core/badge.py | 18 +++++++++++ 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index 891973e5f..7de0b3650 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -7,14 +7,31 @@ import 'create_control.dart'; class BadgeControl extends StatelessWidget { final Control? parent; final Control control; + final List children; + final bool parentDisabled; - const BadgeControl({Key? key, required this.parent, required this.control}) + const BadgeControl( + {Key? key, + required this.parent, + required this.control, + required this.children, + required this.parentDisabled}) : super(key: key); @override Widget build(BuildContext context) { debugPrint("Badge build: ${control.id}"); + String label = control.attrString("label", "")!; + + var contentCtrls = + children.where((c) => c.name == "content" && c.isVisible); + bool disabled = control.isDisabled || parentDisabled; + + Widget? child = contentCtrls.isNotEmpty + ? createControl(control, contentCtrls.first.id, disabled) + : null; + //var height = control.attrDouble("height"); //var thickness = control.attrDouble("thickness"); //var color = HexColor.fromString( @@ -22,14 +39,11 @@ class BadgeControl extends StatelessWidget { return baseControl( context, - // Divider( - // height: height, - // thickness: thickness, - // color: color, - // ), Badge( - child: Text("Badge"), - label: Text('10'), + //child: Text("Badge"), + + label: Text(label), + child: child, ), parent, control); diff --git a/package/lib/src/controls/create_control.dart b/package/lib/src/controls/create_control.dart index ef65d4618..084070edf 100644 --- a/package/lib/src/controls/create_control.dart +++ b/package/lib/src/controls/create_control.dart @@ -197,7 +197,12 @@ Widget createWidget(Key? key, ControlViewModel controlView, Control? parent, key: key, parent: parent, control: controlView.control); case "badge": return BadgeControl( - key: key, parent: parent, control: controlView.control); + key: key, + parent: parent, + control: controlView.control, + children: controlView.children, + parentDisabled: parentDisabled, + ); case "clipboard": return ClipboardControl( parent: parent, control: controlView.control, nextChild: nextChild); diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index c7199b64d..e13ba767b 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -24,6 +24,7 @@ class Badge(Control): def __init__( self, + content: Optional[Control] = None, ref: Optional[Ref] = None, opacity: OptionalNumber = None, visible: Optional[bool] = None, @@ -48,10 +49,18 @@ def __init__( # self.thickness = thickness # self.color = color self.label = label + self.content = content def _get_control_name(self): return "badge" + def _get_children(self): + children = [] + if self.__content is not None: + self.__content._set_attr_internal("n", "content") + children.append(self.__content) + return children + # label @property def label(self) -> Optional[str]: @@ -60,3 +69,12 @@ def label(self) -> Optional[str]: @label.setter def label(self, value: Optional[str]): self._set_attr("label", value) + + # content + @property + def content(self) -> Optional[Control]: + return self.__content + + @content.setter + def content(self, value: Optional[Control]): + self.__content = value From 60c893ace42c7c27d7fca833a8615e12b778df82 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Thu, 2 Nov 2023 14:05:49 -0700 Subject: [PATCH 03/11] offset property --- package/lib/src/controls/badge.dart | 7 ++++++- .../packages/flet-core/src/flet_core/badge.py | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index 7de0b3650..cbe60b43f 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import '../models/control.dart'; -import '../utils/colors.dart'; import 'create_control.dart'; +import '../utils/transforms.dart'; class BadgeControl extends StatelessWidget { final Control? parent; @@ -32,6 +32,8 @@ class BadgeControl extends StatelessWidget { ? createControl(control, contentCtrls.first.id, disabled) : null; + var offsetDetails = parseOffset(control, "offset"); + //var height = control.attrDouble("height"); //var thickness = control.attrDouble("thickness"); //var color = HexColor.fromString( @@ -43,6 +45,9 @@ class BadgeControl extends StatelessWidget { //child: Text("Badge"), label: Text(label), + offset: offsetDetails != null + ? Offset(offsetDetails.x, offsetDetails.y) + : null, child: child, ), parent, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index e13ba767b..8f9ef0ca2 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -2,6 +2,9 @@ from flet_core.control import Control, OptionalNumber from flet_core.ref import Ref +from flet_core.types import ( + OffsetValue, +) class Badge(Control): @@ -36,6 +39,7 @@ def __init__( # thickness: OptionalNumber = None, # color: Optional[str] = None, label: Optional[str] = None, + offset: OffsetValue = None, ): Control.__init__( self, @@ -50,10 +54,15 @@ def __init__( # self.color = color self.label = label self.content = content + self.offset = offset def _get_control_name(self): return "badge" + def _before_build_command(self): + super()._before_build_command() + self._set_attr_json("offset", self.__offset) + def _get_children(self): children = [] if self.__content is not None: @@ -78,3 +87,12 @@ def content(self) -> Optional[Control]: @content.setter def content(self, value: Optional[Control]): self.__content = value + + # offset + @property + def offset(self) -> OffsetValue: + return self.__offset + + @offset.setter + def offset(self, value: OffsetValue): + self.__offset = value From 9457c125f048959e43478681696d36207cf61477 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 09:52:59 -0700 Subject: [PATCH 04/11] alignment property --- package/lib/src/controls/badge.dart | 2 ++ .../packages/flet-core/src/flet_core/badge.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index cbe60b43f..c944d16a3 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../models/control.dart'; import 'create_control.dart'; import '../utils/transforms.dart'; +import '../utils/alignment.dart'; class BadgeControl extends StatelessWidget { final Control? parent; @@ -48,6 +49,7 @@ class BadgeControl extends StatelessWidget { offset: offsetDetails != null ? Offset(offsetDetails.x, offsetDetails.y) : null, + alignment: parseAlignment(control, "alignment"), child: child, ), parent, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index 8f9ef0ca2..b00049536 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -1,6 +1,7 @@ from typing import Any, Optional from flet_core.control import Control, OptionalNumber +from flet_core.alignment import Alignment from flet_core.ref import Ref from flet_core.types import ( OffsetValue, @@ -40,6 +41,7 @@ def __init__( # color: Optional[str] = None, label: Optional[str] = None, offset: OffsetValue = None, + alignment: Optional[Alignment] = None, ): Control.__init__( self, @@ -55,6 +57,7 @@ def __init__( self.label = label self.content = content self.offset = offset + self.alignment = alignment def _get_control_name(self): return "badge" @@ -62,6 +65,7 @@ def _get_control_name(self): def _before_build_command(self): super()._before_build_command() self._set_attr_json("offset", self.__offset) + self._set_attr_json("alignment", self.__alignment) def _get_children(self): children = [] @@ -70,6 +74,20 @@ def _get_children(self): children.append(self.__content) return children + # alignment + @property + def alignment(self) -> Optional[Alignment]: + """:obj:`Alignment`, optional: Align the child control within the container. + + Alignment is an instance of `alignment.Alignment` class object with `x` and `y` properties + representing the distance from the center of a rectangle. + """ + return self.__alignment + + @alignment.setter + def alignment(self, value: Optional[Alignment]): + self.__alignment = value + # label @property def label(self) -> Optional[str]: From 90909e2cc8fcd61fa129a9562d55ab4d1f3af1e8 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 09:57:19 -0700 Subject: [PATCH 05/11] bgcolor property --- package/lib/src/controls/badge.dart | 5 +++++ sdk/python/packages/flet-core/src/flet_core/badge.py | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index c944d16a3..e3885e8b7 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -4,6 +4,7 @@ import '../models/control.dart'; import 'create_control.dart'; import '../utils/transforms.dart'; import '../utils/alignment.dart'; +import '../utils/colors.dart'; class BadgeControl extends StatelessWidget { final Control? parent; @@ -35,6 +36,9 @@ class BadgeControl extends StatelessWidget { var offsetDetails = parseOffset(control, "offset"); + var bgColor = HexColor.fromString( + Theme.of(context), control.attrString("bgColor", "")!); + //var height = control.attrDouble("height"); //var thickness = control.attrDouble("thickness"); //var color = HexColor.fromString( @@ -50,6 +54,7 @@ class BadgeControl extends StatelessWidget { ? Offset(offsetDetails.x, offsetDetails.y) : null, alignment: parseAlignment(control, "alignment"), + backgroundColor: bgColor, child: child, ), parent, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index b00049536..028ea07d9 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -42,6 +42,7 @@ def __init__( label: Optional[str] = None, offset: OffsetValue = None, alignment: Optional[Alignment] = None, + bgcolor: Optional[str] = None, ): Control.__init__( self, @@ -58,6 +59,7 @@ def __init__( self.content = content self.offset = offset self.alignment = alignment + self.bgcolor = bgcolor def _get_control_name(self): return "badge" @@ -114,3 +116,12 @@ def offset(self) -> OffsetValue: @offset.setter def offset(self, value: OffsetValue): self.__offset = value + + # bgcolor + @property + def bgcolor(self): + return self._get_attr("bgColor") + + @bgcolor.setter + def bgcolor(self, value): + self._set_attr("bgColor", value) From 0e67d177498bb4520a4421681cddbaec039f5cc2 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 10:09:51 -0700 Subject: [PATCH 06/11] label_visible property --- package/lib/src/controls/badge.dart | 3 +++ sdk/python/packages/flet-core/src/flet_core/badge.py | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index e3885e8b7..58b488ede 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -39,6 +39,8 @@ class BadgeControl extends StatelessWidget { var bgColor = HexColor.fromString( Theme.of(context), control.attrString("bgColor", "")!); + bool isLabelVisible = control.attrBool("isLabelVisible", true)!; + //var height = control.attrDouble("height"); //var thickness = control.attrDouble("thickness"); //var color = HexColor.fromString( @@ -50,6 +52,7 @@ class BadgeControl extends StatelessWidget { //child: Text("Badge"), label: Text(label), + isLabelVisible: isLabelVisible, offset: offsetDetails != null ? Offset(offsetDetails.x, offsetDetails.y) : null, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index 028ea07d9..fd0d79523 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -43,6 +43,7 @@ def __init__( offset: OffsetValue = None, alignment: Optional[Alignment] = None, bgcolor: Optional[str] = None, + label_visible: Optional[bool] = None, ): Control.__init__( self, @@ -60,6 +61,7 @@ def __init__( self.offset = offset self.alignment = alignment self.bgcolor = bgcolor + self.label_visible = label_visible def _get_control_name(self): return "badge" @@ -125,3 +127,12 @@ def bgcolor(self): @bgcolor.setter def bgcolor(self, value): self._set_attr("bgColor", value) + + # label_visible + @property + def label_visible(self) -> Optional[bool]: + return self._get_attr("isLabelVisible") + + @label_visible.setter + def label_visible(self, value: Optional[bool]): + self._set_attr("isLabelVisible", value) From f6cfc3616bae4c068ef499cf08ac9f9cb9937b9e Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 11:39:44 -0700 Subject: [PATCH 07/11] fixed label bug; small_size, large_size, text_color properties --- package/lib/src/controls/badge.dart | 14 +++++- .../packages/flet-core/src/flet_core/badge.py | 49 +++++++++++++++++-- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index 58b488ede..15f32659a 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -5,6 +5,7 @@ import 'create_control.dart'; import '../utils/transforms.dart'; import '../utils/alignment.dart'; import '../utils/colors.dart'; +import '../utils/edge_insets.dart'; class BadgeControl extends StatelessWidget { final Control? parent; @@ -24,7 +25,7 @@ class BadgeControl extends StatelessWidget { Widget build(BuildContext context) { debugPrint("Badge build: ${control.id}"); - String label = control.attrString("label", "")!; + String? label = control.attrString("label"); var contentCtrls = children.where((c) => c.name == "content" && c.isVisible); @@ -39,7 +40,12 @@ class BadgeControl extends StatelessWidget { var bgColor = HexColor.fromString( Theme.of(context), control.attrString("bgColor", "")!); + var textColor = HexColor.fromString( + Theme.of(context), control.attrString("textColor", "")!); + bool isLabelVisible = control.attrBool("isLabelVisible", true)!; + var largeSize = control.attrDouble("largeSize"); + var smallSize = control.attrDouble("smallSize"); //var height = control.attrDouble("height"); //var thickness = control.attrDouble("thickness"); @@ -51,13 +57,17 @@ class BadgeControl extends StatelessWidget { Badge( //child: Text("Badge"), - label: Text(label), + label: label != null ? Text(label) : null, isLabelVisible: isLabelVisible, offset: offsetDetails != null ? Offset(offsetDetails.x, offsetDetails.y) : null, alignment: parseAlignment(control, "alignment"), backgroundColor: bgColor, + largeSize: largeSize, + padding: parseEdgeInsets(control, "padding"), + smallSize: smallSize, + textColor: textColor, child: child, ), parent, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index fd0d79523..464b43086 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -3,9 +3,7 @@ from flet_core.control import Control, OptionalNumber from flet_core.alignment import Alignment from flet_core.ref import Ref -from flet_core.types import ( - OffsetValue, -) +from flet_core.types import OffsetValue, PaddingValue class Badge(Control): @@ -44,6 +42,10 @@ def __init__( alignment: Optional[Alignment] = None, bgcolor: Optional[str] = None, label_visible: Optional[bool] = None, + large_size: OptionalNumber = None, + padding: Optional[PaddingValue] = None, + small_size: OptionalNumber = None, + text_color: Optional[str] = None, ): Control.__init__( self, @@ -62,6 +64,10 @@ def __init__( self.alignment = alignment self.bgcolor = bgcolor self.label_visible = label_visible + self.large_size = large_size + self.padding = padding + self.small_size = small_size + self.text_color = text_color def _get_control_name(self): return "badge" @@ -70,6 +76,7 @@ def _before_build_command(self): super()._before_build_command() self._set_attr_json("offset", self.__offset) self._set_attr_json("alignment", self.__alignment) + self._set_attr_json("padding", self.__padding) def _get_children(self): children = [] @@ -136,3 +143,39 @@ def label_visible(self) -> Optional[bool]: @label_visible.setter def label_visible(self, value: Optional[bool]): self._set_attr("isLabelVisible", value) + + # large_size + @property + def large_size(self) -> OptionalNumber: + return self._get_attr("largeSize") + + @large_size.setter + def large_size(self, value: OptionalNumber): + self._set_attr("largeSize", value) + + # padding + @property + def padding(self) -> PaddingValue: + return self.__padding + + @padding.setter + def padding(self, value: PaddingValue): + self.__padding = value + + # small_size + @property + def small_size(self) -> OptionalNumber: + return self._get_attr("smallSize") + + @small_size.setter + def small_size(self, value: OptionalNumber): + self._set_attr("smallSize", value) + + # text_color + @property + def text_color(self): + return self._get_attr("textColor") + + @text_color.setter + def text_color(self, value): + self._set_attr("textColor", value) From 7c0f884fae1cef08f622dd3d9c8d5e7eb28f64b1 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 11:51:44 -0700 Subject: [PATCH 08/11] text_style property --- package/lib/src/controls/badge.dart | 4 ++- .../packages/flet-core/src/flet_core/badge.py | 29 ++++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index 15f32659a..ee15e31eb 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -6,6 +6,7 @@ import '../utils/transforms.dart'; import '../utils/alignment.dart'; import '../utils/colors.dart'; import '../utils/edge_insets.dart'; +import '../utils/text.dart'; class BadgeControl extends StatelessWidget { final Control? parent; @@ -25,7 +26,7 @@ class BadgeControl extends StatelessWidget { Widget build(BuildContext context) { debugPrint("Badge build: ${control.id}"); - String? label = control.attrString("label"); + String? label = control.attrString("labelText"); var contentCtrls = children.where((c) => c.name == "content" && c.isVisible); @@ -68,6 +69,7 @@ class BadgeControl extends StatelessWidget { padding: parseEdgeInsets(control, "padding"), smallSize: smallSize, textColor: textColor, + textStyle: parseTextStyle(Theme.of(context), control, "textStyle"), child: child, ), parent, diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index 464b43086..42e704732 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -4,6 +4,7 @@ from flet_core.alignment import Alignment from flet_core.ref import Ref from flet_core.types import OffsetValue, PaddingValue +from flet_core.text_style import TextStyle class Badge(Control): @@ -37,7 +38,7 @@ def __init__( # height: OptionalNumber = None, # thickness: OptionalNumber = None, # color: Optional[str] = None, - label: Optional[str] = None, + text: Optional[str] = None, offset: OffsetValue = None, alignment: Optional[Alignment] = None, bgcolor: Optional[str] = None, @@ -46,6 +47,7 @@ def __init__( padding: Optional[PaddingValue] = None, small_size: OptionalNumber = None, text_color: Optional[str] = None, + text_style: Optional[TextStyle] = None, ): Control.__init__( self, @@ -58,7 +60,7 @@ def __init__( # self.height = height # self.thickness = thickness # self.color = color - self.label = label + self.text = text self.content = content self.offset = offset self.alignment = alignment @@ -68,6 +70,7 @@ def __init__( self.padding = padding self.small_size = small_size self.text_color = text_color + self.text_style = text_style def _get_control_name(self): return "badge" @@ -77,6 +80,7 @@ def _before_build_command(self): self._set_attr_json("offset", self.__offset) self._set_attr_json("alignment", self.__alignment) self._set_attr_json("padding", self.__padding) + self._set_attr_json("textStyle", self.__text_style) def _get_children(self): children = [] @@ -99,14 +103,14 @@ def alignment(self) -> Optional[Alignment]: def alignment(self, value: Optional[Alignment]): self.__alignment = value - # label + # text @property - def label(self) -> Optional[str]: - return self._get_attr("label") + def text(self) -> Optional[str]: + return self._get_attr("labelText") - @label.setter - def label(self, value: Optional[str]): - self._set_attr("label", value) + @text.setter + def text(self, value: Optional[str]): + self._set_attr("labelText", value) # content @property @@ -179,3 +183,12 @@ def text_color(self): @text_color.setter def text_color(self, value): self._set_attr("textColor", value) + + # text_style + @property + def text_style(self): + return self.__text_style + + @text_style.setter + def text_style(self, value: Optional[TextStyle]): + self.__text_style = value From ddbb4bab168e9b78e259736c161f0d69b21389e6 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Fri, 3 Nov 2023 11:54:50 -0700 Subject: [PATCH 09/11] removed commented code --- package/lib/src/controls/badge.dart | 8 -------- sdk/python/packages/flet-core/src/flet_core/badge.py | 3 --- 2 files changed, 11 deletions(-) diff --git a/package/lib/src/controls/badge.dart b/package/lib/src/controls/badge.dart index ee15e31eb..3ffe7caba 100644 --- a/package/lib/src/controls/badge.dart +++ b/package/lib/src/controls/badge.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; - import '../models/control.dart'; import 'create_control.dart'; import '../utils/transforms.dart'; @@ -48,16 +47,9 @@ class BadgeControl extends StatelessWidget { var largeSize = control.attrDouble("largeSize"); var smallSize = control.attrDouble("smallSize"); - //var height = control.attrDouble("height"); - //var thickness = control.attrDouble("thickness"); - //var color = HexColor.fromString( - // Theme.of(context), control.attrString("color", "")!); - return baseControl( context, Badge( - //child: Text("Badge"), - label: label != null ? Text(label) : null, isLabelVisible: isLabelVisible, offset: offsetDetails != null diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index 42e704732..d16a872f9 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -35,9 +35,6 @@ def __init__( # # Specific # - # height: OptionalNumber = None, - # thickness: OptionalNumber = None, - # color: Optional[str] = None, text: Optional[str] = None, offset: OffsetValue = None, alignment: Optional[Alignment] = None, From ac5b2f0b2bfdef23763a09d0b09da49f01ed8c0c Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Mon, 6 Nov 2023 08:22:02 -0800 Subject: [PATCH 10/11] example for Badge --- .../packages/flet-core/src/flet_core/badge.py | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index d16a872f9..707add6ad 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -9,20 +9,44 @@ class Badge(Control): """ - A Material Design "badge". + A Material Design "badge". + + Badges are used to show notifications, counts, or status information on navigation items such as NavigationBar or NavigationRail destinations + or a button's icon. + + Example: + ``` + import flet as ft + + def main(page: ft.Page): + page.title = "Badges in NavigationBar icons" + page.navigation_bar = ft.NavigationBar( + destinations=[ + ft.NavigationDestination( + icon_content=ft.Badge( + content=ft.Icon(ft.icons.EXPLORE), + small_size=10, + ), + label="Explore", + ), + ft.NavigationDestination(icon=ft.icons.COMMUTE, label="Commute"), + ft.NavigationDestination( + icon_content=ft.Badge(content=ft.Icon(ft.icons.PHONE), text="10") + ), + ] + ) + page.add(ft.Text("Body!")) + - Badges are used to show notifications, counts, or status information on navigation items such as NavigationBar or NavigationRail destinations - or a button's icon. + ft.app(target=main) - Example: - ``` - ``` + ``` - ----- + ----- - Online docs: https://flet.dev/docs/controls/badge + Online docs: https://flet.dev/docs/controls/badge """ def __init__( From 39931607aff201ffcb43e28b2ed74c915c65a727 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Mon, 6 Nov 2023 08:27:36 -0800 Subject: [PATCH 11/11] removed comments --- sdk/python/packages/flet-core/src/flet_core/badge.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/sdk/python/packages/flet-core/src/flet_core/badge.py b/sdk/python/packages/flet-core/src/flet_core/badge.py index 707add6ad..2755d15c2 100644 --- a/sdk/python/packages/flet-core/src/flet_core/badge.py +++ b/sdk/python/packages/flet-core/src/flet_core/badge.py @@ -78,9 +78,6 @@ def __init__( data=data, ) - # self.height = height - # self.thickness = thickness - # self.color = color self.text = text self.content = content self.offset = offset