Skip to content

ClipBehavior

Different ways to clip content.

See Clip from Flutter documentation for ClipBehavior examples.

Inherits: Enum

Properties

Examples#

Showcase#

import flet as ft


def clip_preview(clip_behavior: ft.ClipBehavior) -> ft.Container:
    return ft.Container(
        width=240,
        height=130,
        border=ft.Border.all(2, ft.Colors.OUTLINE),
        border_radius=10,
        bgcolor=ft.Colors.SURFACE,
        content=ft.Stack(
            clip_behavior=clip_behavior,
            controls=[
                ft.Container(
                    width=160,
                    height=70,
                    left=-25,
                    top=30,
                    bgcolor=ft.Colors.PRIMARY_CONTAINER,
                    border_radius=16,
                ),
                ft.Container(
                    width=90,
                    height=90,
                    left=150,
                    top=-20,
                    bgcolor=ft.Colors.TERTIARY_CONTAINER,
                    border_radius=45,
                ),
                ft.Container(
                    width=90,
                    height=90,
                    left=70,
                    top=22,
                    bgcolor=ft.Colors.SECONDARY,
                    border_radius=45,
                    alignment=ft.Alignment.CENTER,
                    content=ft.Icon(ft.Icons.CROP, color=ft.Colors.WHITE),
                ),
            ],
        ),
    )


def showcase_card(clip_behavior: ft.ClipBehavior) -> ft.Container:
    return ft.Container(
        width=280,
        padding=12,
        border=ft.Border.all(1, ft.Colors.RED),
        border_radius=10,
        bgcolor=ft.Colors.SURFACE_CONTAINER_LOW,
        content=ft.Column(
            spacing=8,
            controls=[
                ft.Text(clip_behavior.name, weight=ft.FontWeight.BOLD),
                clip_preview(clip_behavior),
            ],
        ),
    )


def main(page: ft.Page):
    page.theme_mode = ft.ThemeMode.DARK
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    page.appbar = ft.AppBar(title="ClipBehavior Showcase")
    page.add(
        ft.Text("Compare how overflow is clipped for each ClipBehavior value."),
        ft.Row(
            wrap=True,
            spacing=12,
            expand=True,
            scroll=ft.ScrollMode.AUTO,
            alignment=ft.MainAxisAlignment.CENTER,
            controls=[showcase_card(cb) for cb in ft.ClipBehavior],
        ),
    )


ft.run(main)

Properties#

ANTI_ALIAS = 'antiAlias' class-attribute instance-attribute #

Clip with anti-aliasing.

This mode has anti-aliased clipping edges, which reduces jagged edges when the clip shape itself has edges that are diagonal, curved, or otherwise not axis-aligned.

ANTI_ALIAS_WITH_SAVE_LAYER = 'antiAliasWithSaveLayer' class-attribute instance-attribute #

Clip with anti-aliasing and saveLayer immediately following the clip.

HARD_EDGE = 'hardEdge' class-attribute instance-attribute #

Clip, but do not apply anti-aliasing.

This mode enables clipping, but curves and non-axis-aligned straight lines will be jagged as no effort is made to anti-alias.

NONE = 'none' class-attribute instance-attribute #

No clip at all.

This is the default option for most widgets: if the content does not overflow the widget boundary, don't pay any performance cost for clipping.