纯go语言实现flutter风格桌面GUI框架:ui

1、支持windows、linux、unix、masOS、ios、android等操作系统
2、代码风格和flutter基本差不多,如果会flutter和go语言无缝切换上手,如果熟悉go语言很快上手。
3、框架有上100个组件,足以支持绝大部复杂应用
4、支持
1)手动刷新ui
2)定时更新ui
3)指定时间范围实时刷新ui
4)手动开启实时刷新ui和手动关闭实时刷新ui
5)全局实时刷新ui

ui框架:第3个组件:center组件

完整代码:

package main

import (
	"fmt"
	"image"

	"render/layout"
	"render/widget/material"

	"ui"
)

type CenterDemo struct {
	app   *ui.App
	count int
}

func NewCenterDemo() *CenterDemo {
	d := &CenterDemo{}
	d.app = ui.NewApp("Center 组件示例", 500, 400)

	d.app.SetChildren(
		ui.NewCenter().SetChild(
			ui.NewButton("居中按钮", func() {
				d.count++
				fmt.Printf("点击次数: %d\n", d.count)
			}),
		),
	)

	return d
}

func (d *CenterDemo) Layout(gtx layout.Context, th *material.Theme) layout.Dimensions {
	ui.FillRect(gtx, image.Rect(0, 0, gtx.Constraints.Max.X, gtx.Constraints.Max.Y), ui.ColorBackground.NRGBA())
	return ui.Column{Children: []ui.Widget{
		ui.NewTitleLabel("Center 居中组件"),
		ui.NewDivider().SetHeight(1),
		ui.NewCenter().SetChild(
			ui.NewButton("居中按钮", func() {
				d.count++
				fmt.Printf("点击次数: %d\n", d.count)
			}).SetID("center_btn"),
		),
		ui.NewDivider().SetHeight(1),
		ui.NewLabel("Center 将子组件在可用空间中水平和垂直居中").SetFontSize(13).SetTextColor(ui.ColorHint),
		ui.NewCenter().SetHeight(120).SetChild(
			ui.Row{
				MainAlignment:  ui.MainCenter,
				CrossAlignment: ui.CrossCenter,
				Spacing:        12,
				Children: []ui.Widget{
					ui.NewOutlinedButton("轮廓按钮", func() {}).SetID("outlined_btn"),
					ui.NewTextButton("文本按钮", func() {}).SetID("text_btn"),
				},
			},
		),
		ui.Center{
			Child: ui.NewTextButton("居中按钮", func() {}).SetID("center_text_btn"),
		},
	}}.Layout(gtx, th)
}

func main() {
	demo := NewCenterDemo()
	demo.app.SetRoot(demo)
	demo.app.Run()
}

效果:
在这里插入图片描述
以上设置默认尺寸展示。
以下是最大化展示:
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐