跳转到内容

Button:按钮与 TextButton

Button 构建按钮与 TextButton。本页包含可运行示例、完整属性及行为限制。

完整示例

先完成环境准备。下面是完整 main.go,执行 go run .

go
package main

import (
	"fmt"
	"github.com/dxui-org/dxui"
	"log"
)

func main() {
	count := 0
	app := dxui.NewApp(dxui.AppOptions{
		Title:      "Button",
		Width:      640,
		Height:     480,
		Background: dxui.RGBA(248, 250, 252, 255),
	})
	if err := app.Run(func() dxui.View {
		return dxui.Box(
			dxui.BoxProps{
				Gap: 16,
				Style: dxui.Style{
					Padding: dxui.Padding(24),
				},
			},
			dxui.Box(
				dxui.BoxProps{
					Gap: 12,
				},
				dxui.Label(fmt.Sprint(count)),
				dxui.TextButton(
					dxui.ButtonProps{
						Variant: dxui.ButtonOutline,
						Tone:    dxui.ButtonSuccess,
						Size:    dxui.ButtonNormal,
						OnPress: func() {

							count++
						},
					},
					"Add",
				),
				dxui.Button(dxui.ButtonProps{
					Disabled: true,
				}, dxui.Label("Disabled")),
			),
		)
	}); err != nil {

		log.Fatal(err)
	}
}

参数与 API

go
func Button(props ButtonProps, child View) View
go
func TextButton(props ButtonProps, label string) View
字段类型用途、默认与约束
Keystring同父级稳定唯一身份;默认空。动态列表使用业务 ID,勿用可变索引。
StyleStyle局部布局、绘制和文本样式;零值使用固有尺寸与主题默认。
TokenComponentToken组件主题条目;空值选择该组件默认。
StatesStateStyles真实交互状态的绘制补丁,不能伪造状态或改变布局。
PointerPointerBehavior默认 PointerAuto;PointerNone 排除整个子树的指针参与,不等同 Disabled。
VariantButtonVariant默认 ButtonFilled;外观配方,详见本页。
ToneButtonTone默认 ButtonPrimary;ButtonDefault 是其别名。
SizeButtonSize尺寸;Button 是枚举,其它组件为逻辑单位,0 取主题默认。
Disabledbool默认 false;交互组件为 true 时移除焦点并取消交互。
OnPressfunc()激活后在 UI 线程执行;nil 不执行动作。

行为与边界

Button 接受一个任意子 View;TextButton 自动居中显示文字。默认 Filled / Primary / Normal。Variant 支持 Filled、Soft、Outline、Dashed、Ghost、Link;Tone 支持 Primary、Secondary、Success、Info、Warn、Danger;Size 支持 Small、Normal、Large。显式 Token 替换外观配方,局部 Style 保持覆盖权。指针或 Enter/Space 匹配释放时激活一次;nil OnPress 仍保留焦点与交互外观。Link 不执行导航。

所有组件共享身份、样式与指针规则。字段引用的枚举、结构体及源码注释见完整声明参考示例运行方式包含构建验证方法。