1
1
import flet as ft
2
2
3
- class Message ():
3
+
4
+ class Message :
4
5
def __init__ (self , user_name : str , text : str , message_type : str ):
5
6
self .user_name = user_name
6
7
self .text = text
7
8
self .message_type = message_type
8
9
10
+
9
11
class ChatMessage (ft .Row ):
10
12
def __init__ (self , message : Message ):
11
13
super ().__init__ ()
12
- self .vertical_alignment = "start"
13
- self .controls = [
14
- ft .CircleAvatar (
15
- content = ft .Text (self .get_initials (message .user_name )),
16
- color = ft .colors .WHITE ,
17
- bgcolor = self .get_avatar_color (message .user_name ),
18
- ),
19
- ft .Column (
20
- [
21
- ft .Text (message .user_name , weight = "bold" ),
22
- ft .Text (message .text , selectable = True ),
23
- ],
24
- tight = True ,
25
- spacing = 5 ,
26
- ),
27
- ]
14
+ self .vertical_alignment = ft . CrossAxisAlignment . START
15
+ self .controls = [
16
+ ft .CircleAvatar (
17
+ content = ft .Text (self .get_initials (message .user_name )),
18
+ color = ft .colors .WHITE ,
19
+ bgcolor = self .get_avatar_color (message .user_name ),
20
+ ),
21
+ ft .Column (
22
+ [
23
+ ft .Text (message .user_name , weight = "bold" ),
24
+ ft .Text (message .text , selectable = True ),
25
+ ],
26
+ tight = True ,
27
+ spacing = 5 ,
28
+ ),
29
+ ]
28
30
29
31
def get_initials (self , user_name : str ):
30
32
if user_name :
@@ -50,8 +52,9 @@ def get_avatar_color(self, user_name: str):
50
52
]
51
53
return colors_lookup [hash (user_name ) % len (colors_lookup )]
52
54
55
+
53
56
def main (page : ft .Page ):
54
- page .horizontal_alignment = "stretch"
57
+ page .horizontal_alignment = ft . CrossAxisAlignment . STRETCH
55
58
page .title = "Flet Chat"
56
59
57
60
def join_chat_click (e ):
@@ -62,12 +65,24 @@ def join_chat_click(e):
62
65
page .session .set ("user_name" , join_user_name .value )
63
66
page .dialog .open = False
64
67
new_message .prefix = ft .Text (f"{ join_user_name .value } : " )
65
- page .pubsub .send_all (Message (user_name = join_user_name .value , text = f"{ join_user_name .value } has joined the chat." , message_type = "login_message" ))
68
+ page .pubsub .send_all (
69
+ Message (
70
+ user_name = join_user_name .value ,
71
+ text = f"{ join_user_name .value } has joined the chat." ,
72
+ message_type = "login_message" ,
73
+ )
74
+ )
66
75
page .update ()
67
76
68
77
def send_message_click (e ):
69
78
if new_message .value != "" :
70
- page .pubsub .send_all (Message (page .session .get ("user_name" ), new_message .value , message_type = "chat_message" ))
79
+ page .pubsub .send_all (
80
+ Message (
81
+ page .session .get ("user_name" ),
82
+ new_message .value ,
83
+ message_type = "chat_message" ,
84
+ )
85
+ )
71
86
new_message .value = ""
72
87
new_message .focus ()
73
88
page .update ()
@@ -94,7 +109,7 @@ def on_message(message: Message):
94
109
title = ft .Text ("Welcome!" ),
95
110
content = ft .Column ([join_user_name ], width = 300 , height = 70 , tight = True ),
96
111
actions = [ft .ElevatedButton (text = "Join chat" , on_click = join_chat_click )],
97
- actions_alignment = "end" ,
112
+ actions_alignment = ft . MainAxisAlignment . END ,
98
113
)
99
114
100
115
# Chat messages
@@ -137,4 +152,5 @@ def on_message(message: Message):
137
152
),
138
153
)
139
154
140
- ft .app (main )
155
+
156
+ ft .app (target = main )
0 commit comments