01 · 快速开始¶
本页带你在 5 分钟内跑起第一个 FlowUI 窗口。
环境要求¶
- Go 1.26.2 或更高
- 桌面系统(Windows / macOS / Linux,Gio 支持的平台)
安装¶
在你的模块里:
应用只 import 公开包:
不要 import github.com/qianniancn/flowui/internal/...。
第一个应用¶
创建 main.go:
package main
import (
"fmt"
"github.com/qianniancn/flowui/ui"
)
type Model struct {
Count int
}
type Msg interface{ msg() }
type Inc struct{}
type Dec struct{}
func (Inc) msg() {}
func (Dec) msg() {}
func Update(m *Model, msg Msg) ui.Cmd[Msg] {
switch msg.(type) {
case Inc:
m.Count++
case Dec:
m.Count--
}
return nil
}
func View(_ *ui.Context, m Model, send ui.Send[Msg]) ui.Widget {
return ui.Center(
ui.Box(
ui.Column(
ui.Text("FlowUI Counter").Size(24),
ui.Text(fmt.Sprintf("count: %d", m.Count)).Size(18),
ui.Row(
ui.Button("inc", ui.Text("+1")).OnClick(func() {
send(Inc{})
}),
ui.Button("dec", ui.Text("-1")).
Variant(ui.ButtonSecondary).
OnClick(func() {
send(Dec{})
}),
).Gap(12),
).Gap(12),
).Style(ui.Padding(24)),
)
}
func main() {
ui.Run(ui.NewProgram(Model{}, Update, View),
ui.Title("FlowUI Counter"),
ui.Size(640, 480),
)
}
运行:
发生了什么¶
Model:业务数据(这里是Count)。Msg:用户意图(Inc/Dec)。Update:唯一修改 Model 的地方。View:只读 Model,返回控件树;按钮通过send投递消息。ui.Run:打开窗口并跑 MVU 循环。
两种应用层级¶
| API | 何时用 |
|---|---|
ui.Run(ui.Program) |
所有单窗口应用(本页) |
ui.Application |
多窗口、托盘和应用生命周期 |