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