Skip to content

Commit 8fa6f16

Browse files
committed
setWindowTitle, counter example for home page
1 parent e181947 commit 8fa6f16

File tree

8 files changed

+139
-89
lines changed

8 files changed

+139
-89
lines changed

client/lib/controls/icon_button.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class IconButtonControl extends StatelessWidget {
2525
Widget build(BuildContext context) {
2626
debugPrint("Button build: ${control.id}");
2727

28-
String? tooltip = control.attrString("tooltip")!;
28+
String? tooltip = control.attrString("tooltip");
2929
IconData? icon = getMaterialIcon(control.attrString("icon", "")!);
3030
Color? iconColor =
3131
HexColor.fromString(context, control.attrString("iconColor", "")!);

client/lib/controls/page.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flet_view/utils/desktop.dart';
12
import 'package:flutter/material.dart';
23

34
import '../models/control.dart';
@@ -75,8 +76,11 @@ class PageControl extends StatelessWidget {
7576

7677
debugPrint("Page theme: $themeMode");
7778

79+
String title = control.attrString("title", "")!;
80+
setWindowTitle(title);
81+
7882
return MaterialApp(
79-
title: control.attrString("title", "")!,
83+
title: title,
8084
theme: theme,
8185
darkTheme: darkTheme,
8286
themeMode: themeMode,

client/lib/main.dart

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
import 'dart:developer';
21
import 'dart:io';
32

43
import 'package:flet_view/actions.dart';
4+
import 'package:flet_view/utils/desktop.dart';
55
import 'package:flet_view/widgets/loading_page.dart';
66
import 'package:flutter/foundation.dart';
7-
import 'package:window_size/window_size.dart';
87
import 'package:flutter/material.dart';
98
import 'package:flutter_redux/flutter_redux.dart';
109
import 'package:redux/redux.dart';
10+
11+
import 'controls/create_control.dart';
1112
import 'models/app_state.dart';
1213
import 'models/page_view_model.dart';
1314
import 'reducers.dart';
14-
import 'utils/uri.dart';
15-
import 'web_socket_client.dart';
16-
import 'controls/create_control.dart';
17-
1815
import 'session_store/session_store.dart'
1916
if (dart.library.io) "session_store/session_store_io.dart"
2017
if (dart.library.js) "session_store/session_store_js.dart";
18+
import 'web_socket_client.dart';
2119

2220
void main([List<String>? args]) async {
23-
//setupWindow();
21+
setupDesktop();
2422

2523
var pageUri = Uri.base;
2624

@@ -100,22 +98,3 @@ class FletApp extends StatelessWidget {
10098
);
10199
}
102100
}
103-
104-
const double windowWidth = 480;
105-
const double windowHeight = 854;
106-
107-
void setupWindow() {
108-
if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) {
109-
WidgetsFlutterBinding.ensureInitialized();
110-
setWindowTitle('Navigation and routing');
111-
setWindowMinSize(const Size(windowWidth, windowHeight));
112-
setWindowMaxSize(const Size(windowWidth, windowHeight));
113-
getCurrentScreen().then((screen) {
114-
setWindowFrame(Rect.fromCenter(
115-
center: screen!.frame.center,
116-
width: windowWidth,
117-
height: windowHeight,
118-
));
119-
});
120-
}
121-
}

client/lib/utils/desktop.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import 'dart:io';
2+
3+
import 'package:flutter/foundation.dart';
4+
import 'package:flutter/widgets.dart';
5+
import 'package:window_size/window_size.dart' as desktop;
6+
7+
const double windowWidth = 480;
8+
const double windowHeight = 854;
9+
10+
void setWindowTitle(String title) {
11+
if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) {
12+
desktop.setWindowTitle(title);
13+
}
14+
}
15+
16+
void setupDesktop() {
17+
if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) {
18+
WidgetsFlutterBinding.ensureInitialized();
19+
// setWindowMinSize(const Size(windowWidth, windowHeight));
20+
// setWindowMaxSize(const Size(windowWidth, windowHeight));
21+
// getCurrentScreen().then((screen) {
22+
// setWindowFrame(Rect.fromCenter(
23+
// center: screen!.frame.center,
24+
// width: windowWidth,
25+
// height: windowHeight,
26+
// ));
27+
// });
28+
}
29+
}

docs/roadmap.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -644,12 +644,6 @@ Properties:
644644
- label
645645
- labelPosition
646646

647-
## TextField
648-
649-
Docs: https://api.flutter.dev/flutter/material/TextField-class.html
650-
651-
Example: https://gallery.flutter.dev/#/demo/text-field
652-
653647
## ElevatedButton
654648

655649
Docs: https://api.flutter.dev/flutter/material/ElevatedButton-class.html
@@ -825,6 +819,7 @@ Properties:
825819
- password
826820
- canRevealPassword - true/false
827821
- readOnly
822+
- shiftEnter
828823
- textAlign
829824

830825
Events:

sdk/python/flet/icon_button.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
class IconButton(ConstrainedControl):
1111
def __init__(
1212
self,
13+
icon: str = None,
1314
ref: Ref = None,
1415
width: OptionalNumber = None,
1516
height: OptionalNumber = None,
@@ -22,7 +23,6 @@ def __init__(
2223
# Specific
2324
#
2425
tooltip: str = None,
25-
icon: str = None,
2626
icon_size: OptionalNumber = None,
2727
icon_color: str = None,
2828
content: Control = None,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import logging
2+
3+
import flet
4+
from flet import IconButton, Page, Row, TextField, icons
5+
6+
7+
def main(page: Page):
8+
page.title = "Flet counter example"
9+
page.vertical_alignment = "center"
10+
11+
txt_number = TextField(value="0", text_align="right", width=100)
12+
13+
def minus_click(e):
14+
txt_number.value = int(txt_number.value) - 1
15+
page.update()
16+
17+
def add_click(e):
18+
txt_number.value = int(txt_number.value) + 1
19+
page.update()
20+
21+
page.add(
22+
Row(
23+
[
24+
IconButton(icons.REMOVE, on_click=minus_click),
25+
txt_number,
26+
IconButton(icons.ADD, on_click=add_click),
27+
],
28+
alignment="center",
29+
)
30+
)
31+
32+
33+
flet.app(name="test1", port=8550, target=main)

sdk/python/playground/textfield-test.py

Lines changed: 64 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from flet.container import Container
2626
from flet.icon import Icon
2727
from flet.list_view import ListView
28+
from flet.progress_bar import ProgressBar
2829
from flet.radio import Radio
2930
from flet.radio_group import RadioGroup
3031
from flet.stack import Stack
@@ -39,9 +40,17 @@ def main(page: Page):
3940
page.theme_mode = "light"
4041
page.padding = padding.all(20)
4142

43+
prgb = ProgressBar(visible=False)
44+
4245
def chat_submit(e):
4346
print(f"Submit FieldText: {e.control.value}")
4447
e.control.value = ""
48+
form.disabled = True
49+
prgb.visible = True
50+
page.update()
51+
sleep(2)
52+
form.disabled = False
53+
prgb.visible = False
4554
page.update()
4655

4756
chat_input = TextField(
@@ -51,61 +60,62 @@ def chat_submit(e):
5160
on_submit=chat_submit,
5261
)
5362

54-
page.add(
55-
Column(
56-
[
57-
Text("Outlined TextField", style="headlineMedium"),
58-
TextField(),
59-
Text(
60-
"Outlined TextField with Label, Hint and Helper text",
61-
style="headlineSmall",
62-
),
63-
TextField(
64-
label="Full name",
65-
hint_text="Enter your full name",
66-
helper_text="Hint text is visible when TextField is empty and focused",
67-
),
68-
Text(
69-
"Underlined, filled and multiline TextField",
70-
style="headlineSmall",
71-
),
72-
TextField(
73-
label="Comments",
74-
helper_text="Tell something about us",
75-
border="underline",
76-
filled=True,
77-
min_lines=1,
78-
),
79-
Text(
80-
"New line - Shift + Enter and submit on Enter",
81-
style="headlineSmall",
82-
),
83-
chat_input,
84-
Text(
85-
"Login with email/password",
86-
style="headlineSmall",
87-
),
88-
TextField(
89-
label="Email",
90-
prefix_icon=icons.EMAIL,
91-
border="underline",
92-
keyboard_type="email",
93-
filled=True,
94-
),
95-
TextField(
96-
label="Password",
97-
prefix_icon=icons.PASSWORD_SHARP,
98-
border="underline",
99-
password=True,
100-
can_reveal_password=True,
101-
filled=True,
102-
),
103-
],
104-
scroll="always",
105-
expand=1,
106-
width=600,
107-
),
63+
form = Column(
64+
[
65+
prgb,
66+
Text("Outlined TextField", style="headlineMedium"),
67+
TextField(),
68+
Text(
69+
"Outlined TextField with Label, Hint and Helper text",
70+
style="headlineSmall",
71+
),
72+
TextField(
73+
label="Full name",
74+
hint_text="Enter your full name",
75+
helper_text="Hint text is visible when TextField is empty and focused",
76+
),
77+
Text(
78+
"Underlined, filled and multiline TextField",
79+
style="headlineSmall",
80+
),
81+
TextField(
82+
label="Comments",
83+
helper_text="Tell something about us",
84+
border="underline",
85+
filled=True,
86+
min_lines=1,
87+
),
88+
Text(
89+
"New line - Shift + Enter and submit on Enter",
90+
style="headlineSmall",
91+
),
92+
chat_input,
93+
Text(
94+
"Login with email/password",
95+
style="headlineSmall",
96+
),
97+
TextField(
98+
label="Email",
99+
prefix_icon=icons.EMAIL,
100+
border="underline",
101+
keyboard_type="email",
102+
filled=True,
103+
),
104+
TextField(
105+
label="Password",
106+
prefix_icon=icons.PASSWORD_SHARP,
107+
border="underline",
108+
password=True,
109+
can_reveal_password=True,
110+
filled=True,
111+
),
112+
],
113+
scroll="always",
114+
expand=1,
115+
width=600,
108116
)
109117

118+
page.add(form)
119+
110120

111121
flet.app(name="test1", port=8550, target=main, view=flet.WEB_BROWSER)

0 commit comments

Comments
 (0)