Skip to content

Commit

Permalink
Theming for Switch
Browse files Browse the repository at this point in the history
Fix #523
  • Loading branch information
FeodorFitsner committed Nov 3, 2022
1 parent b9680b0 commit c0446f1
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 8 deletions.
14 changes: 14 additions & 0 deletions package/lib/src/controls/switch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ 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 'create_control.dart';

enum LabelPosition { right, left }
Expand Down Expand Up @@ -97,6 +99,18 @@ class _SwitchControlState extends State<SwitchControl> {
var swtch = Switch(
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"),
trackColor: parseMaterialStateColor(
Theme.of(context), widget.control, "trackColor"),
value: _value,
onChanged: !disabled
? (bool value) {
Expand Down
5 changes: 1 addition & 4 deletions sdk/python/flet/checkbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,7 @@ def _get_control_name(self):

def _before_build_command(self):
super()._before_build_command()
fc = self.__fill_color
if fc is not None and not isinstance(fc, Dict):
fc = {"": fc}
self._set_attr_json("fillColor", fc)
self._set_attr_json("fillColor", self._wrap_attr_dict(self.__fill_color))

# value
@property
Expand Down
5 changes: 1 addition & 4 deletions sdk/python/flet/radio.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,7 @@ def _get_control_name(self):

def _before_build_command(self):
super()._before_build_command()
fc = self.__fill_color
if fc is not None and not isinstance(fc, Dict):
fc = {"": fc}
self._set_attr_json("fillColor", fc)
self._set_attr_json("fillColor", self._wrap_attr_dict(self.__fill_color))

# value
@property
Expand Down
75 changes: 75 additions & 0 deletions sdk/python/flet/switch.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from typing import Any, Optional, Union

from beartype import beartype
from beartype.typing import Dict

from flet.buttons import MaterialState
from flet.constrained_control import ConstrainedControl
from flet.control import OptionalNumber
from flet.ref import Ref
Expand Down Expand Up @@ -57,6 +59,12 @@ def __init__(
label_position: 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,
track_color: Union[None, str, Dict[MaterialState, str]] = None,
on_change=None,
on_focus=None,
on_blur=None,
Expand Down Expand Up @@ -93,13 +101,24 @@ def __init__(
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.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 "switch"

def _before_build_command(self):
super()._before_build_command()
self._set_attr_json("thumbColor", self._wrap_attr_dict(self.__thumb_color))
self._set_attr_json("trackColor", self._wrap_attr_dict(self.__track_color))

# value
@property
def value(self) -> Optional[bool]:
Expand Down Expand Up @@ -139,6 +158,62 @@ def autofocus(self) -> Optional[bool]:
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
@beartype
def thumb_color(self, value: Union[None, str, Dict[MaterialState, str]]):
self.__thumb_color = value

# track_color
@property
def track_color(self) -> Union[None, str, Dict[MaterialState, str]]:
return self.__track_color

@track_color.setter
@beartype
def track_color(self, value: Union[None, str, Dict[MaterialState, str]]):
self.__track_color = value

# on_change
@property
def on_change(self):
Expand Down

0 comments on commit c0446f1

Please sign in to comment.