Skip to content

Commit 27145b0

Browse files
committed
Merge branch 'main' into inesa/fix-tutorials
2 parents b8bac9b + 62f0e01 commit 27145b0

File tree

35 files changed

+342
-36
lines changed

35 files changed

+342
-36
lines changed

client/integration_test/flutter_tester.dart

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,24 @@ class FlutterWidgetTester implements Tester {
7474
}
7575

7676
@override
77-
Future<void> tap(TestFinder finder, int finderIndex) async {
78-
await _tester.tap((finder as FlutterTestFinder).raw.at(finderIndex));
79-
}
77+
Future<void> tap(TestFinder finder, int finderIndex) =>
78+
_tester.tap((finder as FlutterTestFinder).raw.at(finderIndex));
8079

8180
@override
82-
Future<void> longPress(TestFinder finder, int finderIndex) async {
83-
await _tester.longPress((finder as FlutterTestFinder).raw.at(finderIndex));
84-
}
81+
Future<void> tapAt(Offset offset) =>
82+
_tester.tapAt(offset);
83+
84+
@override
85+
Future<void> longPress(TestFinder finder, int finderIndex) =>
86+
_tester.longPress((finder as FlutterTestFinder).raw.at(finderIndex));
8587

8688
@override
8789
Future<void> enterText(
88-
TestFinder finder, int finderIndex, String text) async {
89-
await _tester.enterText(
90-
(finder as FlutterTestFinder).raw.at(finderIndex),
91-
text,
92-
);
93-
}
90+
TestFinder finder, int finderIndex, String text) =>
91+
_tester.enterText(
92+
(finder as FlutterTestFinder).raw.at(finderIndex),
93+
text,
94+
);
9495

9596
@override
9697
Future<void> mouseHover(TestFinder finder, int finderIndex) async {

packages/flet/lib/src/services/tester.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import '../testing/test_finder.dart';
55
import '../utils/icons.dart';
66
import '../utils/keys.dart';
77
import '../utils/time.dart';
8+
import 'package:flet/src/utils/transforms.dart';
9+
810

911
class TesterService extends FletService {
1012
TesterService({required super.control});
@@ -82,6 +84,12 @@ class TesterService extends FletService {
8284
await control.backend.tester!.tap(finder, args["finder_index"]);
8385
}
8486

87+
case "tap_at":
88+
var offset = parseOffset(args["offset"]);
89+
if (offset != null) {
90+
await control.backend.tester!.tapAt(offset);
91+
}
92+
8593
case "long_press":
8694
var finder = _finders[args["finder_id"]];
8795
if (finder != null) {

packages/flet/lib/src/testing/tester.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ abstract class Tester {
1313
TestFinder findByTooltip(String value);
1414
TestFinder findByIcon(IconData icon);
1515
Future<Uint8List> takeScreenshot(String name);
16+
Future<void> tapAt(Offset offset);
1617
Future<void> tap(TestFinder finder, int finderIndex);
1718
Future<void> longPress(TestFinder finder, int finderIndex);
1819
Future<void> enterText(TestFinder finder, int finderIndex, String text);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from dataclasses import dataclass, field
2+
from typing import Any
3+
4+
import flet as ft
5+
6+
7+
def main(page: ft.Page):
8+
@ft.control
9+
class MyButton(ft.Button):
10+
expand: int = field(default_factory=lambda: 1)
11+
style: ft.ButtonStyle = field(
12+
default_factory=lambda: ft.ButtonStyle(
13+
shape=ft.RoundedRectangleBorder(radius=10)
14+
)
15+
)
16+
bgcolor: ft.Colors = ft.Colors.BLUE_ACCENT
17+
icon: Any = ft.Icons.HEADPHONES
18+
19+
@dataclass
20+
class MyButton2(ft.Button):
21+
expand: Any = 1
22+
bgcolor: ft.Colors = ft.Colors.GREEN_ACCENT
23+
style: ft.ButtonStyle = field(
24+
default_factory=lambda: ft.ButtonStyle(
25+
shape=ft.RoundedRectangleBorder(radius=20)
26+
)
27+
)
28+
icon: ft.IconDataOrControl = ft.Icons.HEADPHONES
29+
30+
@ft.control
31+
class MyButton3(ft.Button):
32+
def init(self):
33+
self.expand = 1
34+
self.bgcolor = ft.Colors.RED_ACCENT
35+
self.style = ft.ButtonStyle(shape=ft.RoundedRectangleBorder(radius=30))
36+
self.icon = ft.Icons.HEADPHONES
37+
38+
page.add(
39+
ft.Row([MyButton(content="1")]),
40+
ft.Row([MyButton2(content="2")]),
41+
ft.Row([MyButton3(content="3")]),
42+
)
43+
44+
45+
ft.run(main)

sdk/python/examples/controls/row/__init__.py

Whitespace-only changes.

sdk/python/examples/controls/row/alignment.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ def main(page: ft.Page):
4444
)
4545

4646

47-
ft.run(main)
47+
if __name__ == "__main__":
48+
ft.run(main)

sdk/python/examples/controls/row/spacing.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def handle_slider_change(e: ft.Event[ft.Slider]):
2424
controls=[
2525
ft.Text("Spacing between items"),
2626
ft.Slider(
27+
key="slider",
2728
min=0,
2829
max=50,
2930
divisions=50,
@@ -39,4 +40,5 @@ def handle_slider_change(e: ft.Event[ft.Slider]):
3940
)
4041

4142

42-
ft.run(main)
43+
if __name__ == "__main__":
44+
ft.run(main)

sdk/python/examples/controls/row/vertical_alignment.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ def main(page: ft.Page):
3535
)
3636

3737

38-
ft.run(main)
38+
if __name__ == "__main__":
39+
ft.run(main)

sdk/python/examples/controls/row/wrap.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ def handle_slider_change(e: ft.Event[ft.Slider]):
4545
)
4646

4747

48-
ft.run(main)
48+
if __name__ == "__main__":
49+
ft.run(main)

sdk/python/examples/controls/search_bar/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)