Row
Horizontal flex layout with every alignment, direction, and spacing option.
Row lays children out horizontally. All fields are public. Defaults:
main_axis_alignment Start,
main_axis_size Max,
cross_axis_alignment Center,
text_direction None (resolves Ltr),
vertical_direction Down, spacing 0.0.
Props
Prop
Type
Construction
A first Row application — copy, paste, and run:
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(
Row::builder()
.children(Vec::<Widget>::from([
Text::new("Left").into(),
Text::new("Middle").into(),
Text::new("Right").into(),
]))
.main_axis_alignment(MainAxisAlignment::SpaceBetween)
.spacing(8.0)
.build(),
)
.build()
.into()
})?;
incular::run(app)?;
Ok(())
}Methods
new(children) -> Self
pub fn new(children: impl IntoIterator<Item = impl Into<Widget>>) -> Selfchildren(...)
pub fn children(mut self, children: impl IntoIterator<Item = impl Into<Widget>>) -> SelfReplace the child list.
main_axis_alignment(alignment: MainAxisAlignment)
All variants: Start, End, Center, SpaceBetween, SpaceAround,
SpaceEvenly. Getter: get_main_axis_alignment().
main_axis_size(size: MainAxisSize)
Max (default, expand to parent) / Min. Getter: get_main_axis_size().
cross_axis_alignment(alignment) and alignment alias
Start / End / Center / Stretch / Baseline. Getter:
get_cross_axis_alignment().
text_direction(direction: TextDirection)
vertical_direction(direction: VerticalDirection)
spacing(spacing: f32)
Inter-item gap, clamped to max(0.0). Getter: get_spacing().
Flexible children
A weighted split with an expanding gap — copy, paste, and run:
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(
Column::builder()
.main_axis_size(MainAxisSize::Min)
.spacing(12.0)
.children(Vec::<Widget>::from([
Row::new(Vec::<Widget>::from([
Expanded::new(Text::new("Left")).flex(2).into(),
Expanded::new(Text::new("Right")).into(),
])).into(),
Row::new(Vec::<Widget>::from([
Text::new("A").into(),
Spacer::new().flex(1).into(),
Text::new("B").into(),
]))
.main_axis_alignment(MainAxisAlignment::Center)
.cross_axis_alignment(CrossAxisAlignment::Center)
.text_direction(TextDirection::Ltr)
.vertical_direction(VerticalDirection::Down).into(),
]))
.build(),
)
.build()
.into()
})?;
incular::run(app)?;
Ok(())
}See Expanded,
Flexible,
Spacer.
Related: Column,
Flex,
MainAxisAlignment.