跳到主要内容

PubSub

如果您使用 Flet 构建聊天应用程序,需要某种方式将用户消息传递给所有会话。当用户发送消息时,它应该被广播到所有其他应用程序会话并显示在他们的页面上。

Flet 提供了一个简单的内置 PubSub 机制,用于异步通信 между页面会话。

Flet PubSub 允许广播消息到所有应用程序会话或仅发送到特定“主题”(或“频道”)的订阅者。

典型的 PubSub 使用场景是:

这是一个简单的聊天应用程序示例:

import flet as ft

def main(page: ft.Page):
page.title = "Flet 聊天"

# 订阅广播消息
def on_message(msg):
messages.controls.append(ft.Text(msg))
page.update()

page.pubsub.subscribe(on_message)

def send_click(e):
page.pubsub.send_all(f"{user.value}: {message.value}")
# 清理表单
message.value = ""
page.update()

messages = ft.Column()
user = ft.TextField(hint_text="您的名称", width=150)
message = ft.TextField(hint_text="您的消息...", expand=True) # 填充所有空间
send = ft.ElevatedButton("发送", on_click=send_click)
page.add(messages, ft.Row(controls=[user, message, send]))

ft.app(target=main, view=ft.AppView.WEB_BROWSER)