From fa559d3b8096c1df26cd91cd3d3538f5de7c03de Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 10:13:12 -0800 Subject: [PATCH 01/12] CupertinoSwitch initial commit --- package/lib/src/controls/create_control.dart | 11 +- .../lib/src/controls/cupertino_switch.dart | 154 ++++++++++ .../flet-core/src/flet_core/__init__.py | 1 + .../src/flet_core/cupertino_switch.py | 287 ++++++++++++++++++ 4 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 package/lib/src/controls/cupertino_switch.dart create mode 100644 sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py diff --git a/package/lib/src/controls/create_control.dart b/package/lib/src/controls/create_control.dart index 06561784d..fca1d238e 100644 --- a/package/lib/src/controls/create_control.dart +++ b/package/lib/src/controls/create_control.dart @@ -86,6 +86,7 @@ import 'vertical_divider.dart'; import 'webview.dart'; import 'window_drag_area.dart'; import 'cupertino_checkbox.dart'; +import 'cupertino_switch.dart'; Widget createControl(Control? parent, String id, bool parentDisabled, {Widget? nextChild}) { @@ -334,8 +335,7 @@ Widget createWidget(Key? key, ControlViewModel controlView, Control? parent, control: controlView.control, children: controlView.children, parentDisabled: parentDisabled, - dispatch: controlView.dispatch - ); + dispatch: controlView.dispatch); case "stack": return StackControl( key: key, @@ -502,6 +502,13 @@ Widget createWidget(Key? key, ControlViewModel controlView, Control? parent, control: controlView.control, parentDisabled: parentDisabled, dispatch: controlView.dispatch); + case "cupertinoswitch": + return CupertinoSwitchControl( + key: key, + parent: parent, + control: controlView.control, + parentDisabled: parentDisabled, + dispatch: controlView.dispatch); case "slider": return SliderControl( key: key, diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart new file mode 100644 index 000000000..841899280 --- /dev/null +++ b/package/lib/src/controls/cupertino_switch.dart @@ -0,0 +1,154 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_redux/flutter_redux.dart'; + +import '../actions.dart'; +import '../flet_app_services.dart'; +import '../models/app_state.dart'; +import '../models/control.dart'; +import '../protocol/update_control_props_payload.dart'; +import '../utils/buttons.dart'; +import '../utils/colors.dart'; +import '../utils/icons.dart'; +import 'create_control.dart'; +import 'list_tile.dart'; + +enum LabelPosition { right, left } + +class CupertinoSwitchControl extends StatefulWidget { + final Control? parent; + final Control control; + final bool parentDisabled; + final dynamic dispatch; + + const CupertinoSwitchControl( + {Key? key, + this.parent, + required this.control, + required this.parentDisabled, + required this.dispatch}) + : super(key: key); + + @override + State createState() => _CupertinoSwitchControlState(); +} + +class _CupertinoSwitchControlState extends State { + bool _value = false; + late final FocusNode _focusNode; + + @override + void initState() { + super.initState(); + _focusNode = FocusNode(); + _focusNode.addListener(_onFocusChange); + } + + @override + void dispose() { + _focusNode.removeListener(_onFocusChange); + _focusNode.dispose(); + super.dispose(); + } + + void _onChange(bool value) { + var svalue = value.toString(); + debugPrint(svalue); + setState(() { + _value = value; + }); + List> props = [ + {"i": widget.control.id, "value": svalue} + ]; + widget.dispatch( + UpdateControlPropsAction(UpdateControlPropsPayload(props: props))); + final server = FletAppServices.of(context).server; + server.updateControlProps(props: props); + server.sendPageEvent( + eventTarget: widget.control.id, eventName: "change", eventData: svalue); + } + + void _onFocusChange() { + FletAppServices.of(context).server.sendPageEvent( + eventTarget: widget.control.id, + eventName: _focusNode.hasFocus ? "focus" : "blur", + eventData: ""); + } + + @override + Widget build(BuildContext context) { + debugPrint("CupertinoSwitchControl build: ${widget.control.id}"); + + String label = widget.control.attrString("label", "")!; + LabelPosition labelPosition = LabelPosition.values.firstWhere( + (p) => + p.name.toLowerCase() == + widget.control.attrString("labelPosition", "")!.toLowerCase(), + orElse: () => LabelPosition.right); + bool autofocus = widget.control.attrBool("autofocus", false)!; + bool disabled = widget.control.isDisabled || widget.parentDisabled; + + return StoreConnector( + distinct: true, + converter: (store) => store.dispatch, + builder: (context, dispatch) { + debugPrint( + "CupertinoSwitch StoreConnector build: ${widget.control.id}"); + + bool value = widget.control.attrBool("value", false)!; + if (_value != value) { + _value = value; + } + + var swtch = CupertinoSwitch( + autofocus: autofocus, + focusNode: _focusNode, + activeColor: HexColor.fromString(Theme.of(context), + widget.control.attrString("activeColor", "")!), + //activeTrackColor: HexColor.fromString(Theme.of(context), + // widget.control.attrString("activeTrackColor", "")!), + //inactiveThumbColor: HexColor.fromString(Theme.of(context), + // widget.control.attrString("inactiveThumbColor", "")!), + //inactiveTrackColor: HexColor.fromString(Theme.of(context), + // widget.control.attrString("inactiveTrackColor", "")!), + //thumbColor: parseMaterialStateColor( + // Theme.of(context), widget.control, "thumbColor"), + //thumbIcon: parseMaterialStateIcon( + // Theme.of(context), widget.control, "thumbIcon"), + //trackColor: parseMaterialStateColor( + // Theme.of(context), widget.control, "trackColor"), + value: _value, + onChanged: !disabled + ? (bool value) { + _onChange(value); + } + : null); + + ListTileClicks.of(context)?.notifier.addListener(() { + _onChange(!_value); + }); + + Widget result = swtch; + if (label != "") { + var labelWidget = disabled + ? Text(label, + style: TextStyle(color: Theme.of(context).disabledColor)) + : MouseRegion( + cursor: SystemMouseCursors.click, child: Text(label)); + result = MergeSemantics( + child: GestureDetector( + onTap: !disabled + ? () { + _onChange(!_value); + } + : null, + child: labelPosition == LabelPosition.right + ? Row(children: [swtch, labelWidget]) + : Row(children: [labelWidget, swtch]))); + } + + return constrainedControl( + context, result, widget.parent, widget.control); + }); + } +} 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 7f03f73d2..5e2d1e921 100644 --- a/sdk/python/packages/flet-core/src/flet_core/__init__.py +++ b/sdk/python/packages/flet-core/src/flet_core/__init__.py @@ -227,3 +227,4 @@ from flet_core.navigation_drawer import NavigationDrawer, NavigationDrawerDestination from flet_core.selection_area import SelectionArea from flet_core.cupertino_checkbox import CupertinoCheckbox +from flet_core.cupertino_switch import CupertinoSwitch diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py new file mode 100644 index 000000000..b7c9e66cd --- /dev/null +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -0,0 +1,287 @@ +from typing import Any, Dict, Optional, Union + +from flet_core.constrained_control import ConstrainedControl +from flet_core.control import OptionalNumber +from flet_core.ref import Ref +from flet_core.types import ( + AnimationValue, + LabelPosition, + LabelPositionString, + MaterialState, + OffsetValue, + ResponsiveNumber, + RotateValue, + ScaleValue, +) + +try: + from typing import Literal +except ImportError: + from typing_extensions import Literal + + +class CupertinoSwitch(ConstrainedControl): + """ + A toggle represents a physical switch that allows someone to choose between two mutually exclusive options. + + or example, "On/Off", "Show/Hide". Choosing an option should produce an immediate result. + + Example: + ``` + import flet as ft + + def main(page: ft.Page): + def theme_changed(e): + page.theme_mode = ( + ft.ThemeMode.DARK + if page.theme_mode == ft.ThemeMode.LIGHT + else ft.ThemeMode.LIGHT + ) + c.label = ( + "Light theme" if page.theme_mode == ft.ThemeMode.LIGHT else "Dark theme" + ) + page.update() + + page.theme_mode = ft.ThemeMode.LIGHT + c = ft.Switch(label="Light theme", on_change=theme_changed) + page.add(c) + + ft.app(target=main) + ``` + + ----- + + Online docs: https://flet.dev/docs/controls/switch + """ + + def __init__( + self, + ref: Optional[Ref] = None, + key: Optional[str] = None, + width: OptionalNumber = None, + height: OptionalNumber = None, + left: OptionalNumber = None, + top: OptionalNumber = None, + right: OptionalNumber = None, + bottom: OptionalNumber = None, + expand: Union[None, bool, int] = None, + col: Optional[ResponsiveNumber] = None, + opacity: OptionalNumber = None, + rotate: RotateValue = None, + scale: ScaleValue = None, + offset: OffsetValue = None, + aspect_ratio: OptionalNumber = None, + animate_opacity: AnimationValue = None, + animate_size: AnimationValue = None, + animate_position: AnimationValue = None, + animate_rotation: AnimationValue = None, + animate_scale: AnimationValue = None, + animate_offset: AnimationValue = None, + on_animation_end=None, + tooltip: Optional[str] = None, + visible: Optional[bool] = None, + disabled: Optional[bool] = None, + data: Any = None, + # + # Specific + # + label: Optional[str] = None, + label_position: LabelPosition = LabelPosition.NONE, + value: Optional[bool] = None, + autofocus: Optional[bool] = None, + active_color: Optional[str] = None, + active_track_color: Optional[str] = None, + inactive_thumb_color: Optional[str] = None, + inactive_track_color: Optional[str] = None, + thumb_color: Union[None, str, Dict[MaterialState, str]] = None, + thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, + track_color: Union[None, str, Dict[MaterialState, str]] = None, + on_change=None, + on_focus=None, + on_blur=None, + ): + ConstrainedControl.__init__( + self, + ref=ref, + key=key, + width=width, + height=height, + left=left, + top=top, + right=right, + bottom=bottom, + expand=expand, + col=col, + opacity=opacity, + rotate=rotate, + scale=scale, + offset=offset, + aspect_ratio=aspect_ratio, + animate_opacity=animate_opacity, + animate_size=animate_size, + animate_position=animate_position, + animate_rotation=animate_rotation, + animate_scale=animate_scale, + animate_offset=animate_offset, + on_animation_end=on_animation_end, + tooltip=tooltip, + visible=visible, + disabled=disabled, + data=data, + ) + self.value = value + self.label = label + self.label_position = label_position + self.autofocus = autofocus + self.active_color = active_color + self.active_track_color = active_track_color + self.inactive_thumb_color = inactive_thumb_color + self.inactive_track_color = inactive_track_color + self.thumb_color = thumb_color + self.thumb_icon = thumb_icon + self.track_color = track_color + self.on_change = on_change + self.on_focus = on_focus + self.on_blur = on_blur + + def _get_control_name(self): + return "cupertinoswitch" + + def _before_build_command(self): + super()._before_build_command() + self._set_attr_json("thumbColor", self.__thumb_color) + self._set_attr_json("thumbIcon", self.__thumb_icon) + self._set_attr_json("trackColor", self.__track_color) + + # value + @property + def value(self) -> Optional[bool]: + return self._get_attr("value", data_type="bool", def_value=False) + + @value.setter + def value(self, value: Optional[bool]): + self._set_attr("value", value) + + # label + @property + def label(self): + return self._get_attr("label") + + @label.setter + def label(self, value): + self._set_attr("label", value) + + # label_position + @property + def label_position(self) -> LabelPosition: + return self.__label_position + + @label_position.setter + def label_position(self, value: LabelPosition): + self.__label_position = value + if isinstance(value, LabelPosition): + self._set_attr("labelPosition", value.value) + else: + self.__set_label_position(value) + + def __set_label_position(self, value: LabelPositionString): + self._set_attr("labelPosition", value) + + # autofocus + @property + def autofocus(self) -> Optional[bool]: + return self._get_attr("autofocus", data_type="bool", def_value=False) + + @autofocus.setter + def autofocus(self, value: Optional[bool]): + self._set_attr("autofocus", value) + + # active_color + @property + def active_color(self): + return self._get_attr("activeColor") + + @active_color.setter + def active_color(self, value): + self._set_attr("activeColor", value) + + # active_track_color + @property + def active_track_color(self): + return self._get_attr("activeTrackColor") + + @active_track_color.setter + def active_track_color(self, value): + self._set_attr("activeTrackColor", value) + + # inactive_thumb_color + @property + def inactive_thumb_color(self): + return self._get_attr("inactiveThumbColor") + + @inactive_thumb_color.setter + def inactive_thumb_color(self, value): + self._set_attr("inactiveThumbColor", value) + + # inactive_track_color + @property + def inactive_track_color(self): + return self._get_attr("inactiveTrackColor") + + @inactive_track_color.setter + def inactive_track_color(self, value): + self._set_attr("inactiveTrackColor", value) + + # thumb_color + @property + def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: + return self.__thumb_color + + @thumb_color.setter + def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): + self.__thumb_color = value + + # thumb_icon + @property + def thumb_icon(self) -> Union[None, str, Dict[MaterialState, str]]: + return self.__thumb_icon + + @thumb_icon.setter + def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): + self.__thumb_icon = value + + # track_color + @property + def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: + return self.__track_color + + @track_color.setter + def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): + self.__track_color = value + + # on_change + @property + def on_change(self): + return self._get_event_handler("change") + + @on_change.setter + def on_change(self, handler): + self._add_event_handler("change", handler) + + # on_focus + @property + def on_focus(self): + return self._get_event_handler("focus") + + @on_focus.setter + def on_focus(self, handler): + self._add_event_handler("focus", handler) + + # on_blur + @property + def on_blur(self): + return self._get_event_handler("blur") + + @on_blur.setter + def on_blur(self, handler): + self._add_event_handler("blur", handler) From 424d2923c35b0bf8d0949f11cd152d187a97a5ba Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 10:45:53 -0800 Subject: [PATCH 02/12] removed unused properties for CupertinoSwitch --- .../src/flet_core/cupertino_switch.py | 104 +++++++++--------- 1 file changed, 49 insertions(+), 55 deletions(-) diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index b7c9e66cd..17da59141 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -22,36 +22,30 @@ class CupertinoSwitch(ConstrainedControl): """ - A toggle represents a physical switch that allows someone to choose between two mutually exclusive options. - - or example, "On/Off", "Show/Hide". Choosing an option should produce an immediate result. + An iOS-style switch. Used to toggle the on/off state of a single setting. Example: ``` import flet as ft def main(page: ft.Page): - def theme_changed(e): - page.theme_mode = ( - ft.ThemeMode.DARK - if page.theme_mode == ft.ThemeMode.LIGHT - else ft.ThemeMode.LIGHT - ) - c.label = ( - "Light theme" if page.theme_mode == ft.ThemeMode.LIGHT else "Dark theme" - ) - page.update() - - page.theme_mode = ft.ThemeMode.LIGHT - c = ft.Switch(label="Light theme", on_change=theme_changed) - page.add(c) + page.add( + ft.CupertinoSwitch(label="Cupertino Switch", value=True), + ft.Switch(label="Material Checkbox", value=True), + ft.Container(height=20), + ft.Text( + "Adaptive Switch shows as CupertinoSwitch on macOS and iOS and as Switch on other platforms:" + ), + ft.Switch(adaptive=True, label="Adaptive Switch", value=True), + ) + ft.app(target=main) ``` ----- - Online docs: https://flet.dev/docs/controls/switch + Online docs: https://flet.dev/docs/controls/cupertinoswitch """ def __init__( @@ -90,11 +84,11 @@ def __init__( value: Optional[bool] = None, autofocus: Optional[bool] = None, active_color: Optional[str] = None, - active_track_color: Optional[str] = None, - inactive_thumb_color: Optional[str] = None, - inactive_track_color: Optional[str] = None, + # active_track_color: Optional[str] = None, + # inactive_thumb_color: Optional[str] = None, + # inactive_track_color: Optional[str] = None, thumb_color: Union[None, str, Dict[MaterialState, str]] = None, - thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, + # thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, track_color: Union[None, str, Dict[MaterialState, str]] = None, on_change=None, on_focus=None, @@ -134,11 +128,11 @@ def __init__( self.label_position = label_position self.autofocus = autofocus self.active_color = active_color - self.active_track_color = active_track_color - self.inactive_thumb_color = inactive_thumb_color - self.inactive_track_color = inactive_track_color + # self.active_track_color = active_track_color + # self.inactive_thumb_color = inactive_thumb_color + # self.inactive_track_color = inactive_track_color self.thumb_color = thumb_color - self.thumb_icon = thumb_icon + # self.thumb_icon = thumb_icon self.track_color = track_color self.on_change = on_change self.on_focus = on_focus @@ -150,7 +144,7 @@ def _get_control_name(self): def _before_build_command(self): super()._before_build_command() self._set_attr_json("thumbColor", self.__thumb_color) - self._set_attr_json("thumbIcon", self.__thumb_icon) + # self._set_attr_json("thumbIcon", self.__thumb_icon) self._set_attr_json("trackColor", self.__track_color) # value @@ -205,32 +199,32 @@ def active_color(self): def active_color(self, value): self._set_attr("activeColor", value) - # active_track_color - @property - def active_track_color(self): - return self._get_attr("activeTrackColor") + # # active_track_color + # @property + # def active_track_color(self): + # return self._get_attr("activeTrackColor") - @active_track_color.setter - def active_track_color(self, value): - self._set_attr("activeTrackColor", value) + # @active_track_color.setter + # def active_track_color(self, value): + # self._set_attr("activeTrackColor", value) - # inactive_thumb_color - @property - def inactive_thumb_color(self): - return self._get_attr("inactiveThumbColor") + # # inactive_thumb_color + # @property + # def inactive_thumb_color(self): + # return self._get_attr("inactiveThumbColor") - @inactive_thumb_color.setter - def inactive_thumb_color(self, value): - self._set_attr("inactiveThumbColor", value) + # @inactive_thumb_color.setter + # def inactive_thumb_color(self, value): + # self._set_attr("inactiveThumbColor", value) - # inactive_track_color - @property - def inactive_track_color(self): - return self._get_attr("inactiveTrackColor") + # # inactive_track_color + # @property + # def inactive_track_color(self): + # return self._get_attr("inactiveTrackColor") - @inactive_track_color.setter - def inactive_track_color(self, value): - self._set_attr("inactiveTrackColor", value) + # @inactive_track_color.setter + # def inactive_track_color(self, value): + # self._set_attr("inactiveTrackColor", value) # thumb_color @property @@ -241,14 +235,14 @@ def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): self.__thumb_color = value - # thumb_icon - @property - def thumb_icon(self) -> Union[None, str, Dict[MaterialState, str]]: - return self.__thumb_icon + # # thumb_icon + # @property + # def thumb_icon(self) -> Union[None, str, Dict[MaterialState, str]]: + # return self.__thumb_icon - @thumb_icon.setter - def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): - self.__thumb_icon = value + # @thumb_icon.setter + # def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): + # self.__thumb_icon = value # track_color @property From dc6f507c5f53cb363ea36fa79b67073c013b7b4e Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 11:01:30 -0800 Subject: [PATCH 03/12] adaptive property for Switch --- package/lib/src/controls/switch.dart | 12 ++++++++++++ .../packages/flet-core/src/flet_core/switch.py | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/package/lib/src/controls/switch.dart b/package/lib/src/controls/switch.dart index 225f7b366..7ac4840cd 100644 --- a/package/lib/src/controls/switch.dart +++ b/package/lib/src/controls/switch.dart @@ -1,3 +1,5 @@ +import 'package:flet/src/controls/cupertino_switch.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; @@ -78,6 +80,16 @@ class _SwitchControlState extends State { Widget build(BuildContext context) { debugPrint("SwitchControl build: ${widget.control.id}"); + bool adaptive = widget.control.attrBool("adaptive", false)!; + if (adaptive && + (defaultTargetPlatform == TargetPlatform.iOS || + defaultTargetPlatform == TargetPlatform.macOS)) { + return CupertinoSwitchControl( + control: widget.control, + parentDisabled: widget.parentDisabled, + dispatch: widget.dispatch); + } + String label = widget.control.attrString("label", "")!; LabelPosition labelPosition = LabelPosition.values.firstWhere( (p) => diff --git a/sdk/python/packages/flet-core/src/flet_core/switch.py b/sdk/python/packages/flet-core/src/flet_core/switch.py index 88e29020f..6cd84fbfc 100644 --- a/sdk/python/packages/flet-core/src/flet_core/switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/switch.py @@ -96,6 +96,7 @@ def __init__( thumb_color: Union[None, str, Dict[MaterialState, str]] = None, thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, track_color: Union[None, str, Dict[MaterialState, str]] = None, + adaptive: Optional[bool] = None, on_change=None, on_focus=None, on_blur=None, @@ -140,6 +141,7 @@ def __init__( self.thumb_color = thumb_color self.thumb_icon = thumb_icon self.track_color = track_color + self.adaptive = adaptive self.on_change = on_change self.on_focus = on_focus self.on_blur = on_blur @@ -187,6 +189,15 @@ def label_position(self, value: LabelPosition): def __set_label_position(self, value: LabelPositionString): self._set_attr("labelPosition", value) + # adaptive + @property + def adaptive(self) -> Optional[bool]: + return self._get_attr("adaptive", data_type="bool", def_value=False) + + @adaptive.setter + def adaptive(self, value: Optional[bool]): + self._set_attr("adaptive", value) + # autofocus @property def autofocus(self) -> Optional[bool]: From 15b759807f9044555abf0620fbe30d80fa855d4c Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 12:17:13 -0800 Subject: [PATCH 04/12] color properties --- .../lib/src/controls/cupertino_switch.dart | 4 ++ .../src/flet_core/cupertino_switch.py | 50 +++++++++++++------ 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index 841899280..65fac1b45 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -105,6 +105,10 @@ class _CupertinoSwitchControlState extends State { focusNode: _focusNode, activeColor: HexColor.fromString(Theme.of(context), widget.control.attrString("activeColor", "")!), + thumbColor: HexColor.fromString(Theme.of(context), + widget.control.attrString("thumbColor", "")!), + trackColor: HexColor.fromString(Theme.of(context), + widget.control.attrString("trackColor", "")!), //activeTrackColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("activeTrackColor", "")!), //inactiveThumbColor: HexColor.fromString(Theme.of(context), diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index 17da59141..3cb4096a5 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -87,9 +87,11 @@ def __init__( # active_track_color: Optional[str] = None, # inactive_thumb_color: Optional[str] = None, # inactive_track_color: Optional[str] = None, - thumb_color: Union[None, str, Dict[MaterialState, str]] = None, + # thumb_color: Union[None, str, Dict[MaterialState, str]] = None, + thumb_color: Optional[str] = None, # thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, - track_color: Union[None, str, Dict[MaterialState, str]] = None, + # track_color: Union[None, str, Dict[MaterialState, str]] = None, + track_color: Optional[str] = None, on_change=None, on_focus=None, on_blur=None, @@ -141,11 +143,11 @@ def __init__( def _get_control_name(self): return "cupertinoswitch" - def _before_build_command(self): - super()._before_build_command() - self._set_attr_json("thumbColor", self.__thumb_color) - # self._set_attr_json("thumbIcon", self.__thumb_icon) - self._set_attr_json("trackColor", self.__track_color) + # def _before_build_command(self): + # super()._before_build_command() + # self._set_attr_json("thumbColor", self.__thumb_color) + # self._set_attr_json("thumbIcon", self.__thumb_icon) + # self._set_attr_json("trackColor", self.__track_color) # value @property @@ -226,14 +228,23 @@ def active_color(self, value): # def inactive_track_color(self, value): # self._set_attr("inactiveTrackColor", value) + # # thumb_color + # @property + # def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: + # return self.__thumb_color + + # @thumb_color.setter + # def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): + # self.__thumb_color = value + # thumb_color @property - def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: - return self.__thumb_color + def thumb_color(self): + return self._get_attr("thumbColor") @thumb_color.setter - def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): - self.__thumb_color = value + def thumb_color(self, value): + self._set_attr("thumbColor", value) # # thumb_icon # @property @@ -244,14 +255,23 @@ def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): # def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): # self.__thumb_icon = value + # # track_color + # @property + # def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: + # return self.__track_color + + # @track_color.setter + # def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): + # self.__track_color = value + # track_color @property - def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: - return self.__track_color + def track_color(self): + return self._get_attr("trackColor") @track_color.setter - def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): - self.__track_color = value + def track_color(self, value): + self._set_attr("trackColor", value) # on_change @property From adfb0328dca919ac97d14da15438b8b5b8aecc46 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 12:25:22 -0800 Subject: [PATCH 05/12] thumbColor property --- package/lib/src/controls/cupertino_switch.dart | 8 ++++---- package/lib/src/utils/buttons.dart | 12 ++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index 65fac1b45..18a42c44c 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -105,8 +105,8 @@ class _CupertinoSwitchControlState extends State { focusNode: _focusNode, activeColor: HexColor.fromString(Theme.of(context), widget.control.attrString("activeColor", "")!), - thumbColor: HexColor.fromString(Theme.of(context), - widget.control.attrString("thumbColor", "")!), + // thumbColor: HexColor.fromString(Theme.of(context), + // widget.control.attrString("thumbColor", "")!), trackColor: HexColor.fromString(Theme.of(context), widget.control.attrString("trackColor", "")!), //activeTrackColor: HexColor.fromString(Theme.of(context), @@ -115,8 +115,8 @@ class _CupertinoSwitchControlState extends State { // widget.control.attrString("inactiveThumbColor", "")!), //inactiveTrackColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("inactiveTrackColor", "")!), - //thumbColor: parseMaterialStateColor( - // Theme.of(context), widget.control, "thumbColor"), + thumbColor: parseMaterialStateColorForCupertino( + Theme.of(context), widget.control, "thumbColor"), //thumbIcon: parseMaterialStateIcon( // Theme.of(context), widget.control, "thumbIcon"), //trackColor: parseMaterialStateColor( diff --git a/package/lib/src/utils/buttons.dart b/package/lib/src/utils/buttons.dart index c54a70e4d..6e4de405e 100644 --- a/package/lib/src/utils/buttons.dart +++ b/package/lib/src/utils/buttons.dart @@ -51,6 +51,18 @@ MaterialStateProperty? parseMaterialStateColor( j1, (jv) => HexColor.fromString(theme, jv as String), null); } +Color? parseMaterialStateColorForCupertino( + ThemeData theme, Control control, String propName) { + var v = control.attrString(propName, null); + if (v == null) { + return null; + } + + final j1 = json.decode(v); + return getMaterialStateProperty( + j1, (jv) => HexColor.fromString(theme, jv as String), null); +} + ButtonStyle? buttonStyleFromJSON( ThemeData theme, Map json, From c03a32c7e6d0ce07cd2ecff504f41f89ab34b78c Mon Sep 17 00:00:00 2001 From: Feodor Fitsner Date: Tue, 5 Dec 2023 12:40:20 -0800 Subject: [PATCH 06/12] CupertinoSwitch.thumb_color --- .../lib/src/controls/cupertino_switch.dart | 12 +++---- package/lib/src/utils/buttons.dart | 12 ------- .../src/flet_core/cupertino_switch.py | 33 ++++++++++--------- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index 18a42c44c..fb3af5229 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -9,7 +9,6 @@ import '../models/control.dart'; import '../protocol/update_control_props_payload.dart'; import '../utils/buttons.dart'; import '../utils/colors.dart'; -import '../utils/icons.dart'; import 'create_control.dart'; import 'list_tile.dart'; @@ -22,12 +21,11 @@ class CupertinoSwitchControl extends StatefulWidget { final dynamic dispatch; const CupertinoSwitchControl( - {Key? key, + {super.key, this.parent, required this.control, required this.parentDisabled, - required this.dispatch}) - : super(key: key); + required this.dispatch}); @override State createState() => _CupertinoSwitchControlState(); @@ -100,6 +98,9 @@ class _CupertinoSwitchControlState extends State { _value = value; } + var materialThumbColor = parseMaterialStateColor( + Theme.of(context), widget.control, "thumbColor"); + var swtch = CupertinoSwitch( autofocus: autofocus, focusNode: _focusNode, @@ -115,8 +116,7 @@ class _CupertinoSwitchControlState extends State { // widget.control.attrString("inactiveThumbColor", "")!), //inactiveTrackColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("inactiveTrackColor", "")!), - thumbColor: parseMaterialStateColorForCupertino( - Theme.of(context), widget.control, "thumbColor"), + thumbColor: materialThumbColor?.resolve({}), //thumbIcon: parseMaterialStateIcon( // Theme.of(context), widget.control, "thumbIcon"), //trackColor: parseMaterialStateColor( diff --git a/package/lib/src/utils/buttons.dart b/package/lib/src/utils/buttons.dart index 6e4de405e..c54a70e4d 100644 --- a/package/lib/src/utils/buttons.dart +++ b/package/lib/src/utils/buttons.dart @@ -51,18 +51,6 @@ MaterialStateProperty? parseMaterialStateColor( j1, (jv) => HexColor.fromString(theme, jv as String), null); } -Color? parseMaterialStateColorForCupertino( - ThemeData theme, Control control, String propName) { - var v = control.attrString(propName, null); - if (v == null) { - return null; - } - - final j1 = json.decode(v); - return getMaterialStateProperty( - j1, (jv) => HexColor.fromString(theme, jv as String), null); -} - ButtonStyle? buttonStyleFromJSON( ThemeData theme, Map json, diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index 3cb4096a5..cd3d557b4 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -143,9 +143,10 @@ def __init__( def _get_control_name(self): return "cupertinoswitch" - # def _before_build_command(self): - # super()._before_build_command() - # self._set_attr_json("thumbColor", self.__thumb_color) + def _before_build_command(self): + super()._before_build_command() + self._set_attr_json("thumbColor", self.__thumb_color) + # self._set_attr_json("thumbIcon", self.__thumb_icon) # self._set_attr_json("trackColor", self.__track_color) @@ -228,23 +229,23 @@ def active_color(self, value): # def inactive_track_color(self, value): # self._set_attr("inactiveTrackColor", value) - # # thumb_color - # @property - # def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: - # return self.__thumb_color - - # @thumb_color.setter - # def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): - # self.__thumb_color = value - # thumb_color @property - def thumb_color(self): - return self._get_attr("thumbColor") + def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: + return self.__thumb_color @thumb_color.setter - def thumb_color(self, value): - self._set_attr("thumbColor", value) + def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): + self.__thumb_color = value + + # thumb_color + # @property + # def thumb_color(self): + # return self._get_attr("thumbColor") + + # @thumb_color.setter + # def thumb_color(self, value): + # self._set_attr("thumbColor", value) # # thumb_icon # @property From b73382fd3efc8d28beb0dcf9a9091a5f6e401a60 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 12:57:39 -0800 Subject: [PATCH 07/12] track_color property --- .../lib/src/controls/cupertino_switch.dart | 8 +++-- .../src/flet_core/cupertino_switch.py | 30 +++++++++---------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index fb3af5229..cdc0d57b7 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -101,6 +101,9 @@ class _CupertinoSwitchControlState extends State { var materialThumbColor = parseMaterialStateColor( Theme.of(context), widget.control, "thumbColor"); + var materialTrackColor = parseMaterialStateColor( + Theme.of(context), widget.control, "trackColor"); + var swtch = CupertinoSwitch( autofocus: autofocus, focusNode: _focusNode, @@ -108,8 +111,8 @@ class _CupertinoSwitchControlState extends State { widget.control.attrString("activeColor", "")!), // thumbColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("thumbColor", "")!), - trackColor: HexColor.fromString(Theme.of(context), - widget.control.attrString("trackColor", "")!), + // trackColor: HexColor.fromString(Theme.of(context), + // widget.control.attrString("trackColor", "")!), //activeTrackColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("activeTrackColor", "")!), //inactiveThumbColor: HexColor.fromString(Theme.of(context), @@ -117,6 +120,7 @@ class _CupertinoSwitchControlState extends State { //inactiveTrackColor: HexColor.fromString(Theme.of(context), // widget.control.attrString("inactiveTrackColor", "")!), thumbColor: materialThumbColor?.resolve({}), + trackColor: materialTrackColor?.resolve({}), //thumbIcon: parseMaterialStateIcon( // Theme.of(context), widget.control, "thumbIcon"), //trackColor: parseMaterialStateColor( diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index cd3d557b4..5b64bab7f 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -147,8 +147,8 @@ def _before_build_command(self): super()._before_build_command() self._set_attr_json("thumbColor", self.__thumb_color) - # self._set_attr_json("thumbIcon", self.__thumb_icon) - # self._set_attr_json("trackColor", self.__track_color) + # self._set_attr_json("thumbIcon", self.__thumb_icon) + self._set_attr_json("trackColor", self.__track_color) # value @property @@ -256,23 +256,23 @@ def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): # def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): # self.__thumb_icon = value - # # track_color - # @property - # def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: - # return self.__track_color - - # @track_color.setter - # def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): - # self.__track_color = value - # track_color @property - def track_color(self): - return self._get_attr("trackColor") + def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: + return self.__track_color @track_color.setter - def track_color(self, value): - self._set_attr("trackColor", value) + def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): + self.__track_color = value + + # # track_color + # @property + # def track_color(self): + # return self._get_attr("trackColor") + + # @track_color.setter + # def track_color(self, value): + # self._set_attr("trackColor", value) # on_change @property From 40d3189acf39d9aa26aeaffec23b7c7eb97b0dd3 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 13:10:04 -0800 Subject: [PATCH 08/12] focus_color for Switch and CupertinoSwitch --- package/lib/src/controls/cupertino_switch.dart | 2 ++ package/lib/src/controls/switch.dart | 2 ++ .../flet-core/src/flet_core/cupertino_switch.py | 11 +++++++++++ sdk/python/packages/flet-core/src/flet_core/switch.py | 11 +++++++++++ 4 files changed, 26 insertions(+) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index cdc0d57b7..fd959d839 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -121,6 +121,8 @@ class _CupertinoSwitchControlState extends State { // widget.control.attrString("inactiveTrackColor", "")!), thumbColor: materialThumbColor?.resolve({}), trackColor: materialTrackColor?.resolve({}), + focusColor: HexColor.fromString(Theme.of(context), + widget.control.attrString("focusColor", "")!), //thumbIcon: parseMaterialStateIcon( // Theme.of(context), widget.control, "thumbIcon"), //trackColor: parseMaterialStateColor( diff --git a/package/lib/src/controls/switch.dart b/package/lib/src/controls/switch.dart index 7ac4840cd..59f51d580 100644 --- a/package/lib/src/controls/switch.dart +++ b/package/lib/src/controls/switch.dart @@ -127,6 +127,8 @@ class _SwitchControlState extends State { Theme.of(context), widget.control, "thumbIcon"), trackColor: parseMaterialStateColor( Theme.of(context), widget.control, "trackColor"), + focusColor: HexColor.fromString(Theme.of(context), + widget.control.attrString("focusColor", "")!), value: _value, onChanged: !disabled ? (bool value) { diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index 5b64bab7f..c2b3b223b 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -84,6 +84,7 @@ def __init__( value: Optional[bool] = None, autofocus: Optional[bool] = None, active_color: Optional[str] = None, + focus_color: Optional[str] = None, # active_track_color: Optional[str] = None, # inactive_thumb_color: Optional[str] = None, # inactive_track_color: Optional[str] = None, @@ -130,6 +131,7 @@ def __init__( self.label_position = label_position self.autofocus = autofocus self.active_color = active_color + self.focus_color = focus_color # self.active_track_color = active_track_color # self.inactive_thumb_color = inactive_thumb_color # self.inactive_track_color = inactive_track_color @@ -202,6 +204,15 @@ def active_color(self): def active_color(self, value): self._set_attr("activeColor", value) + # focus_color + @property + def focus_color(self): + return self._get_attr("focusColor") + + @focus_color.setter + def focus_color(self, value): + self._set_attr("focusColor", value) + # # active_track_color # @property # def active_track_color(self): diff --git a/sdk/python/packages/flet-core/src/flet_core/switch.py b/sdk/python/packages/flet-core/src/flet_core/switch.py index 6cd84fbfc..5bc510812 100644 --- a/sdk/python/packages/flet-core/src/flet_core/switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/switch.py @@ -91,6 +91,7 @@ def __init__( autofocus: Optional[bool] = None, active_color: Optional[str] = None, active_track_color: Optional[str] = None, + focus_color: Optional[str] = None, inactive_thumb_color: Optional[str] = None, inactive_track_color: Optional[str] = None, thumb_color: Union[None, str, Dict[MaterialState, str]] = None, @@ -136,6 +137,7 @@ def __init__( self.autofocus = autofocus self.active_color = active_color self.active_track_color = active_track_color + self.focus_color = focus_color self.inactive_thumb_color = inactive_thumb_color self.inactive_track_color = inactive_track_color self.thumb_color = thumb_color @@ -225,6 +227,15 @@ def active_track_color(self): def active_track_color(self, value): self._set_attr("activeTrackColor", value) + # focus_color + @property + def focus_color(self): + return self._get_attr("focusColor") + + @focus_color.setter + def focus_color(self, value): + self._set_attr("focusColor", value) + # inactive_thumb_color @property def inactive_thumb_color(self): From bd760ddef9e55e49d1c3108c9dffadb7b222d909 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 13:18:36 -0800 Subject: [PATCH 09/12] clean up --- .../lib/src/controls/cupertino_switch.dart | 14 ---- .../src/flet_core/cupertino_switch.py | 73 ------------------- .../flet-core/src/flet_core/switch.py | 5 -- 3 files changed, 92 deletions(-) diff --git a/package/lib/src/controls/cupertino_switch.dart b/package/lib/src/controls/cupertino_switch.dart index fd959d839..cccf9c6c0 100644 --- a/package/lib/src/controls/cupertino_switch.dart +++ b/package/lib/src/controls/cupertino_switch.dart @@ -109,24 +109,10 @@ class _CupertinoSwitchControlState extends State { focusNode: _focusNode, activeColor: HexColor.fromString(Theme.of(context), widget.control.attrString("activeColor", "")!), - // thumbColor: HexColor.fromString(Theme.of(context), - // widget.control.attrString("thumbColor", "")!), - // trackColor: HexColor.fromString(Theme.of(context), - // widget.control.attrString("trackColor", "")!), - //activeTrackColor: HexColor.fromString(Theme.of(context), - // widget.control.attrString("activeTrackColor", "")!), - //inactiveThumbColor: HexColor.fromString(Theme.of(context), - // widget.control.attrString("inactiveThumbColor", "")!), - //inactiveTrackColor: HexColor.fromString(Theme.of(context), - // widget.control.attrString("inactiveTrackColor", "")!), thumbColor: materialThumbColor?.resolve({}), trackColor: materialTrackColor?.resolve({}), focusColor: HexColor.fromString(Theme.of(context), widget.control.attrString("focusColor", "")!), - //thumbIcon: parseMaterialStateIcon( - // Theme.of(context), widget.control, "thumbIcon"), - //trackColor: parseMaterialStateColor( - // Theme.of(context), widget.control, "trackColor"), value: _value, onChanged: !disabled ? (bool value) { diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index c2b3b223b..3d2c4d70a 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -14,11 +14,6 @@ ScaleValue, ) -try: - from typing import Literal -except ImportError: - from typing_extensions import Literal - class CupertinoSwitch(ConstrainedControl): """ @@ -39,10 +34,8 @@ def main(page: ft.Page): ft.Switch(adaptive=True, label="Adaptive Switch", value=True), ) - ft.app(target=main) ``` - ----- Online docs: https://flet.dev/docs/controls/cupertinoswitch @@ -85,13 +78,7 @@ def __init__( autofocus: Optional[bool] = None, active_color: Optional[str] = None, focus_color: Optional[str] = None, - # active_track_color: Optional[str] = None, - # inactive_thumb_color: Optional[str] = None, - # inactive_track_color: Optional[str] = None, - # thumb_color: Union[None, str, Dict[MaterialState, str]] = None, thumb_color: Optional[str] = None, - # thumb_icon: Union[None, str, Dict[MaterialState, str]] = None, - # track_color: Union[None, str, Dict[MaterialState, str]] = None, track_color: Optional[str] = None, on_change=None, on_focus=None, @@ -132,11 +119,7 @@ def __init__( self.autofocus = autofocus self.active_color = active_color self.focus_color = focus_color - # self.active_track_color = active_track_color - # self.inactive_thumb_color = inactive_thumb_color - # self.inactive_track_color = inactive_track_color self.thumb_color = thumb_color - # self.thumb_icon = thumb_icon self.track_color = track_color self.on_change = on_change self.on_focus = on_focus @@ -148,8 +131,6 @@ def _get_control_name(self): def _before_build_command(self): super()._before_build_command() self._set_attr_json("thumbColor", self.__thumb_color) - - # self._set_attr_json("thumbIcon", self.__thumb_icon) self._set_attr_json("trackColor", self.__track_color) # value @@ -213,33 +194,6 @@ def focus_color(self): def focus_color(self, value): self._set_attr("focusColor", value) - # # active_track_color - # @property - # def active_track_color(self): - # return self._get_attr("activeTrackColor") - - # @active_track_color.setter - # def active_track_color(self, value): - # self._set_attr("activeTrackColor", value) - - # # inactive_thumb_color - # @property - # def inactive_thumb_color(self): - # return self._get_attr("inactiveThumbColor") - - # @inactive_thumb_color.setter - # def inactive_thumb_color(self, value): - # self._set_attr("inactiveThumbColor", value) - - # # inactive_track_color - # @property - # def inactive_track_color(self): - # return self._get_attr("inactiveTrackColor") - - # @inactive_track_color.setter - # def inactive_track_color(self, value): - # self._set_attr("inactiveTrackColor", value) - # thumb_color @property def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: @@ -249,24 +203,6 @@ def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): self.__thumb_color = value - # thumb_color - # @property - # def thumb_color(self): - # return self._get_attr("thumbColor") - - # @thumb_color.setter - # def thumb_color(self, value): - # self._set_attr("thumbColor", value) - - # # thumb_icon - # @property - # def thumb_icon(self) -> Union[None, str, Dict[MaterialState, str]]: - # return self.__thumb_icon - - # @thumb_icon.setter - # def thumb_icon(self, value: Union[None, str, Dict[MaterialState, str]]): - # self.__thumb_icon = value - # track_color @property def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: @@ -276,15 +212,6 @@ def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): self.__track_color = value - # # track_color - # @property - # def track_color(self): - # return self._get_attr("trackColor") - - # @track_color.setter - # def track_color(self, value): - # self._set_attr("trackColor", value) - # on_change @property def on_change(self): diff --git a/sdk/python/packages/flet-core/src/flet_core/switch.py b/sdk/python/packages/flet-core/src/flet_core/switch.py index 5bc510812..1d0abc8ee 100644 --- a/sdk/python/packages/flet-core/src/flet_core/switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/switch.py @@ -14,11 +14,6 @@ ScaleValue, ) -try: - from typing import Literal -except ImportError: - from typing_extensions import Literal - class Switch(ConstrainedControl): """ From 5ba9dbdc1ed3742a1f36eca7eb0a69852add384c Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 13:21:56 -0800 Subject: [PATCH 10/12] fixed types for CupertinoSwitch thumb_color and track_color --- .../packages/flet-core/src/flet_core/cupertino_switch.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index 3d2c4d70a..c9ed2e51c 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -196,20 +196,20 @@ def focus_color(self, value): # thumb_color @property - def thumb_color(self) -> Union[None, str, Dict[MaterialState, str]]: + def thumb_color(self) -> Optional[str]: return self.__thumb_color @thumb_color.setter - def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]): + def thumb_color(self, value: Optional[str]): self.__thumb_color = value # track_color @property - def track_color(self) -> Union[None, str, Dict[MaterialState, str]]: + def track_color(self) -> Optional[str]: return self.__track_color @track_color.setter - def track_color(self, value: Union[None, str, Dict[MaterialState, str]]): + def track_color(self, value: Optional[str]): self.__track_color = value # on_change From 1903d4a4d839252540de7e193fcc9347b57d3f7f Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 5 Dec 2023 13:24:32 -0800 Subject: [PATCH 11/12] clean up --- package/lib/src/controls/switch.dart | 2 +- .../packages/flet-core/src/flet_core/cupertino_switch.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/package/lib/src/controls/switch.dart b/package/lib/src/controls/switch.dart index 59f51d580..d4cbbcc93 100644 --- a/package/lib/src/controls/switch.dart +++ b/package/lib/src/controls/switch.dart @@ -103,7 +103,7 @@ class _SwitchControlState extends State { distinct: true, converter: (store) => store.dispatch, builder: (context, dispatch) { - debugPrint("Checkbox StoreConnector build: ${widget.control.id}"); + debugPrint("Switch StoreConnector build: ${widget.control.id}"); bool value = widget.control.attrBool("value", false)!; if (_value != value) { diff --git a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py index c9ed2e51c..2a39f631c 100644 --- a/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py +++ b/sdk/python/packages/flet-core/src/flet_core/cupertino_switch.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union from flet_core.constrained_control import ConstrainedControl from flet_core.control import OptionalNumber @@ -7,7 +7,6 @@ AnimationValue, LabelPosition, LabelPositionString, - MaterialState, OffsetValue, ResponsiveNumber, RotateValue, From d6d023d37ffb12168320064605aad80f9cea9f7c Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 12 Dec 2023 10:00:40 -0800 Subject: [PATCH 12/12] replaced import with relative path to a file. --- package/lib/src/controls/switch.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/lib/src/controls/switch.dart b/package/lib/src/controls/switch.dart index d4cbbcc93..6fee0f126 100644 --- a/package/lib/src/controls/switch.dart +++ b/package/lib/src/controls/switch.dart @@ -1,4 +1,3 @@ -import 'package:flet/src/controls/cupertino_switch.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; @@ -13,6 +12,7 @@ import '../utils/colors.dart'; import '../utils/icons.dart'; import 'create_control.dart'; import 'list_tile.dart'; +import 'cupertino_switch.dart'; enum LabelPosition { right, left }