github.com/utopiagio/gio@v0.0.8/widget/material/doc.go (about) 1 // SPDX-License-Identifier: Unlicense OR MIT 2 3 // Package material implements the Material design. 4 // 5 // To maximize reusability and visual flexibility, user interface controls are 6 // split into two parts: the stateful widget and the stateless drawing of it. 7 // 8 // For example, widget.Clickable encapsulates the state and event 9 // handling of all clickable areas, while the Theme is responsible to 10 // draw a specific area, for example a button. 11 // 12 // This snippet defines a button that prints a message when clicked: 13 // 14 // var gtx layout.Context 15 // button := new(widget.Clickable) 16 // 17 // for button.Clicked(gtx) { 18 // fmt.Println("Clicked!") 19 // } 20 // 21 // Use a Theme to draw the button: 22 // 23 // theme := material.NewTheme(...) 24 // 25 // material.Button(theme, button, "Click me!").Layout(gtx) 26 // 27 // # Customization 28 // 29 // Quite often, a program needs to customize the theme-provided defaults. Several 30 // options are available, depending on the nature of the change. 31 // 32 // Mandatory parameters: Some parameters are not part of the widget state but 33 // have no obvious default. In the program above, the button text is a 34 // parameter to the Theme.Button method. 35 // 36 // Theme-global parameters: For changing the look of all widgets drawn with a 37 // particular theme, adjust the `Theme` fields: 38 // 39 // theme.Palette.Fg = color.NRGBA{...} 40 // 41 // Widget-local parameters: For changing the look of a particular widget, 42 // adjust the widget specific theme object: 43 // 44 // btn := material.Button(theme, button, "Click me!") 45 // btn.Font.Style = text.Italic 46 // btn.Layout(gtx) 47 // 48 // Widget variants: A widget can have several distinct representations even 49 // though the underlying state is the same. A widget.Clickable can be drawn as a 50 // round icon button: 51 // 52 // icon := widget.NewIcon(...) 53 // 54 // material.IconButton(theme, button, icon, "Click me!").Layout(gtx) 55 // 56 // Specialized widgets: Theme both define a generic Label method 57 // that takes a text size, and specialized methods for standard text 58 // sizes such as Theme.H1 and Theme.Body2. 59 package material