Block

The Block widget serves as a foundational building block for structuring and framing other widgets. It’s essentially a container that can have borders, a title, and other styling elements to enhance the aesthetics and structure of your terminal interface. This page provides an in-depth exploration of the Block widget.

Basic Usage

The simplest use case for a Block is to create a container with borders:

let b = Block::default()
    .borders(Borders::ALL);
f.render_widget(b, chunks[0]);

Titles

A common use case for Block is to give a section of the UI a title or a label:

let b = Block::default()
    .title("Header")
    .borders(Borders::ALL);
f.render_widget(b, chunks[0]);

You can also use the Title struct for better positioning or multiple titles.

let b = Block::default()
    .title(block::Title::from("Left Title").alignment(Alignment::Left))
    .title(block::Title::from("Middle Title").alignment(Alignment::Center))
    .title(block::Title::from("Right Title").alignment(Alignment::Right))
    .borders(Borders::ALL);
f.render_widget(b, chunks[0]);

Border style

Block provides flexibility in both the borders style and type:

let b = Block::default()
    .title("Styled Header")
    .border_style(Style::default().fg(Color::Magenta))
    .border_type(BorderType::Rounded)
    .borders(Borders::ALL);
f.render_widget(b, chunks[0]);