Advertisement
Guest User

Untitled

a guest
Oct 18th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.69 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "log"
  5.     "os"
  6.  
  7.     "gioui.org/app"
  8.     "gioui.org/io/system"
  9.     "gioui.org/layout"
  10.     "gioui.org/op"
  11.     "gioui.org/unit"
  12.     "gioui.org/widget"
  13.     "gioui.org/widget/material"
  14.  
  15.     "gioui.org/font/gofont"
  16. )
  17.  
  18. func main() {
  19.     go func() {
  20.         w := app.NewWindow(
  21.             app.Size(unit.Dp(600), unit.Dp(400)),
  22.         )
  23.         if err := loop(w); err != nil {
  24.             log.Fatal(err)
  25.         }
  26.         os.Exit(0)
  27.     }()
  28.     app.Main()
  29. }
  30.  
  31. func loop(w *app.Window) error {
  32.     th := material.NewTheme(gofont.Collection())
  33.     labels := []string{"B1", "Button2"}
  34.     buttons := make([]widget.Clickable, len(labels))
  35.     widgets := make([]layout.Widget, len(labels))
  36.     var ops op.Ops
  37.     for {
  38.         e := <-w.Events()
  39.         switch e := e.(type) {
  40.         case system.DestroyEvent:
  41.             return e.Err
  42.         case system.FrameEvent:
  43.             gtx := layout.NewContext(&ops, e)
  44.             layout.Flex{Axis: layout.Vertical, Spacing: layout.SpaceAround}.Layout(gtx,
  45.                 layout.Rigid(func(gtx layout.Context) layout.Dimensions {
  46.                     return layout.Center.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
  47.                         list := &layout.List{
  48.                             Axis:      layout.Vertical,
  49.                             Alignment: layout.Middle,
  50.                         }
  51.                         for i, label := range labels {
  52.                             widgets[i] = material.Button(th, &buttons[i], label).Layout
  53.                         }
  54.                         return list.Layout(gtx, len(widgets), func(gtx layout.Context, i int) layout.Dimensions {
  55.                             return layout.UniformInset(unit.Dp(0)).Layout(gtx, widgets[i])
  56.                         })
  57.                     })
  58.                 }),
  59.                 layout.Rigid(func(gtx layout.Context) layout.Dimensions {
  60.                     return layout.Center.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
  61.                         return material.H6(th, "Info").Layout(gtx)
  62.                     })
  63.                 }),
  64.             )
  65.             e.Frame(gtx.Ops)
  66.         }
  67.     }
  68.     return nil
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement