// 原生回调也发布 Function 签名:state.set 接收一个 Event,increment 接收零参数。 // 同一事件注册机制按实际签名调用;label 绑定再把事件 kind 转成可显示的字符串。 // 保留最后一次收到的 Event 对象,初值 kind=waiting;不是只存一份格式化事件文本。 received = ui.state(Event("waiting")) count = ui.state(0) // 只读计算提取当前事件种类,作为 label.text 绑定的依赖。 function eventKind(): String { return received.value.kind } label = TextBlock("waiting") subscription = label.bind("text", eventKind) withEvent = Button("传递 Event 给原生 set") // received.set 是一参数原生方法,分发器传入实际 click Event。 firstConnection = withEvent.on("click", received.set) withoutEvent = Button("调用零参数原生 increment") // count.increment 的签名为零参数,分发器调用时不传多余 Event。 secondConnection = withoutEvent.on("click", count.increment) // 把已绑定状态与两种回调放到同一页面,便于对比输入效果。 page = Page() page.title = "原生方法签名" page.render(Column(24, 16, TextBlock("源码和原生回调共用参数契约"), label, ui.textOf(count, "value"), withEvent, withoutEvent))