Skip to main content

flow_column

Function flow_column 

Source
pub fn flow_column() -> FlowColumnBuilder
Expand description

§flow_column

A layout component that wraps children into multiple vertical columns.

§Usage

Wrap tall item stacks into columns for responsive dashboards or menus.

§Parameters

  • modifier — modifier chain applied to the flowing column container.
  • main_axis_alignment — alignment within each wrapped column.
  • cross_axis_alignment — cross-axis alignment for items inside a column.
  • line_alignment — alignment between wrapped columns.
  • item_spacing — spacing between items in the same column.
  • line_spacing — spacing between wrapped columns.
  • max_items_per_line — optional cap for items per column.
  • max_lines — optional cap for total wrapped columns.
  • children — child slot rendered inside the layout.

§Examples

use tessera_components::{boxed::boxed, flow_column::flow_column, modifier::{ModifierExt as _, SemanticsArgs}};
use tessera_ui::{Dp, Modifier, tessera, testing::layout_test};

#[tessera]
fn demo() {
    flow_column().modifier(Modifier::new().height(Dp(50.0))).children(|| {
        for tag in ["first", "second"] {
            boxed().modifier(
                Modifier::new().size(Dp(10.0), Dp(30.0))
                    .semantics(SemanticsArgs { test_tag: Some(tag.into()), ..Default::default() })
            ).children(|| {});
        }
    });
}

let snapshot = layout_test(demo).viewport_px(100, 50).run();
snapshot.node("first").position(0, 0).size(10, 30);
snapshot.node("second").position(10, 0).size(10, 30);