Skip to content

Commit c7f337b

Browse files
committed
Fix container blend mode
1 parent 964924d commit c7f337b

File tree

4 files changed

+56
-42
lines changed

4 files changed

+56
-42
lines changed

client/lib/controls/container.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:convert';
22
import 'dart:typed_data';
33

4+
import 'package:collection/collection.dart';
45
import 'package:flet_view/utils/animations.dart';
56
import 'package:flutter/material.dart';
67
import 'package:flutter_redux/flutter_redux.dart';
@@ -86,11 +87,17 @@ class ContainerControl extends StatelessWidget {
8687
opacity: imageOpacity);
8788
}
8889

90+
var gradient = parseGradient(Theme.of(context), control, "gradient");
91+
var blendMode = BlendMode.values.firstWhereOrNull((e) =>
92+
e.name.toLowerCase() ==
93+
control.attrString("blendMode", "")!.toLowerCase());
94+
8995
var boxDecor = BoxDecoration(
9096
color: bgColor,
91-
gradient: parseGradient(Theme.of(context), control, "gradient"),
97+
gradient: gradient,
9298
image: image,
93-
backgroundBlendMode: BlendMode.modulate,
99+
backgroundBlendMode:
100+
bgColor != null || gradient != null ? blendMode : null,
94101
border: parseBorder(Theme.of(context), control, "border"),
95102
borderRadius: parseBorderRadius(control, "borderRadius"));
96103

sdk/python/flet/container.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from flet.alignment import Alignment
66
from flet.border import Border
77
from flet.constrained_control import ConstrainedControl
8-
from flet.control import Control, OptionalNumber
8+
from flet.control import BlendMode, Control, OptionalNumber
99
from flet.gradients import Gradient
1010
from flet.image import ImageFit, ImageRepeat
1111
from flet.ref import Ref
@@ -59,6 +59,7 @@ def __init__(
5959
alignment: Alignment = None,
6060
bgcolor: str = None,
6161
gradient: Gradient = None,
62+
blend_mode: BlendMode = None,
6263
border: Border = None,
6364
border_radius: BorderRadiusValue = None,
6465
image_src: str = None,
@@ -104,6 +105,7 @@ def __init__(
104105
self.alignment = alignment
105106
self.bgcolor = bgcolor
106107
self.gradient = gradient
108+
self.blend_mode = blend_mode
107109
self.border = border
108110
self.border_radius = border_radius
109111
self.image_src = image_src
@@ -186,6 +188,16 @@ def gradient(self):
186188
def gradient(self, value: Optional[Gradient]):
187189
self.__gradient = value
188190

191+
# blend_mode
192+
@property
193+
def blend_mode(self):
194+
return self._get_attr("blendMode")
195+
196+
@blend_mode.setter
197+
@beartype
198+
def blend_mode(self, value: Optional[BlendMode]):
199+
self._set_attr("blendMode", value)
200+
189201
# border
190202
@property
191203
def border(self):

sdk/python/flet/control.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,39 @@
4949

5050
ScrollMode = Literal[None, True, False, "none", "auto", "adaptive", "always", "hidden"]
5151

52+
BlendMode = Literal[
53+
"clear",
54+
"color",
55+
"colorBurn",
56+
"colorDodge",
57+
"darken",
58+
"difference",
59+
"dst",
60+
"dstATop",
61+
"dstIn",
62+
"dstOut",
63+
"dstOver",
64+
"exclusion",
65+
"hardLight",
66+
"hue",
67+
"lighten",
68+
"luminosity",
69+
"modulate",
70+
"multiply",
71+
"overlay",
72+
"plus",
73+
"saturation",
74+
"screen",
75+
"softLight",
76+
"src",
77+
"srcATop",
78+
"srcIn",
79+
"srcOut",
80+
"srcOver",
81+
"values",
82+
"xor",
83+
]
84+
5285

5386
class Control:
5487
def __init__(

sdk/python/flet/shader_mask.py

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from beartype import beartype
44

55
from flet.constrained_control import ConstrainedControl
6-
from flet.control import Control, OptionalNumber
6+
from flet.control import BlendMode, Control, OptionalNumber
77
from flet.gradients import Gradient
88
from flet.ref import Ref
99
from flet.types import (
@@ -14,44 +14,6 @@
1414
ScaleValue,
1515
)
1616

17-
try:
18-
from typing import Literal
19-
except:
20-
from typing_extensions import Literal
21-
22-
BlendMode = Literal[
23-
"clear",
24-
"color",
25-
"colorBurn",
26-
"colorDodge",
27-
"darken",
28-
"difference",
29-
"dst",
30-
"dstATop",
31-
"dstIn",
32-
"dstOut",
33-
"dstOver",
34-
"exclusion",
35-
"hardLight",
36-
"hue",
37-
"lighten",
38-
"luminosity",
39-
"modulate",
40-
"multiply",
41-
"overlay",
42-
"plus",
43-
"saturation",
44-
"screen",
45-
"softLight",
46-
"src",
47-
"srcATop",
48-
"srcIn",
49-
"srcOut",
50-
"srcOver",
51-
"values",
52-
"xor",
53-
]
54-
5517

5618
class ShaderMask(ConstrainedControl):
5719
def __init__(

0 commit comments

Comments
 (0)