Incular logoIncular
API ReferenceDesign Systems

Material Buttons

Elevated, filled, outlined, text, icon, and floating action buttons.

MaterialButton = incular_controls::Button (prefer these variants). RawMaterialButton = widgets::internal::ActionSurface (low-level hit surface).

ButtonStyle source
ElevatedButtonElevated Primary
FilledButton (+ tonal)Filled / tonal secondary-container
OutlinedButtonTransparent + outline border
TextButtonGhost, minimal padding
IconButtonGhost, 48px touch target
FloatingActionButtonPrimary, 56/40/96/Extended sizes
use incular::prelude::*;
use incular::material_prelude::{ElevatedButton, FilledButton, OutlinedButton, TextButton};

fn main() {
    let app = Application::new(|_cx| {
        Container::builder()
            .padding(EdgeInsets::all(24.0))
            .alignment(Alignment::CENTER)
            .child(
                Column::builder()
                    .main_axis_size(MainAxisSize::Min)
                    .spacing(8.0)
                    .children(Vec::<Widget>::from([
                        ElevatedButton::new("Save")
                                .on_click(|| println!("saved")).into(),
                        FilledButton::new("Go")
                                .on_click(|| println!("go")).into(),
                        OutlinedButton::new("Cancel").into(),
                        TextButton::new("Skip").into(),
                    ]))
                    .build(),
            )
            .build()
            .into()
    })
    .expect("valid application");
    incular::run(app).expect("run application");
}

Each family: new(label), icon(icon, label), with_child, style_from (Elevated→Primary, Outlined→Default, Text→Ghost, Icon→Ghost, FAB→Primary), style, enabled, on_click/on_pressed, focusable_when_disabled, loading. FAB sizes: Regular 56 / Small 40 / Large 96 / Extended 48h + min 80x48; hero_tag, tooltip.

Related: Button.