基于 relm 的音乐播放器开发及优化
1. 消息发送语法糖
在 relm 中,使用 emit() 向另一个小部件发送消息较为繁琐,因此 relm 提供了语法糖。例如,当用户点击移除按钮时,向播放列表发送消息:
gtk::ToolButton {
icon_widget: &new_icon("remove"),
clicked => playlist@RemoveSong,
}
这里使用 @ 语法指定消息将发送到另一个小部件。 @ 之前的部分是接收小部件,之后的部分是消息。此代码意味着每当用户点击移除按钮时,将 RemoveSong 消息发送到播放列表小部件。
在 Playlist::update() 方法中处理此消息:
#[widget]
impl Widget for Playlist {
fn update(&mut self, event: Msg) {
match event {
AddSong(path) => self.add(&path),
LoadSong(path) => self.load(&path),
NextSong => (),
PauseS
超级会员免费看
订阅专栏 解锁全文
1270

被折叠的 条评论
为什么被折叠?



