Incular logoIncular
API ReferenceLayout Widgets

UnconstrainedBox

Natural child sizing plus constraint-transforming boxes.

UnconstrainedBox lets its child size naturally without parent constraints, optionally keeping one axis constrained.

use incular::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let app = Application::new(|_cx| {
        Container::builder()
            .padding(EdgeInsets::all(24.0))
            .alignment(Alignment::CENTER)
            .child(
                UnconstrainedBox::new(Text::new("Natural size"))
                    .constrained_axis(Axis::Horizontal),
            )
            .build()
            .into()
    })?;
    incular::run(app)?;
    Ok(())
}

ConstraintsTransformBox maps incoming Constraints through a function before measuring the child.

use incular::prelude::*;
use incular::config::Clip;

fn main() {
    let app = Application::new(|_cx| {
        ConstraintsTransformBox::new(|c| c.loosen(), Text::new("Hi"))
                .alignment(Alignment::CENTER)
                .clip_behavior(Clip::None).into()
    })
    .expect("valid application");
    incular::run(app).expect("run application");
}

Related: ConstrainedBox, OverflowBox.