Skip to content

DismissDirection 继承自: Enum

定义用于关闭 SnackBar 所允许的滑动方向。

启用关闭功能后,该方向决定了哪些拖拽手势可以关闭 snack bar。

示例 ​

python
import flet as ft


def showcase_card(direction: ft.DismissDirection) -> ft.Container:
    status = ft.Text("Swipe the tile", size=12, color=ft.Colors.ON_SURFACE_VARIANT)

    def create_item() -> ft.Dismissible:
        return ft.Dismissible(
            dismiss_direction=direction,
            on_dismiss=lambda _: on_dismiss(),
            background=ft.Container(
                bgcolor=ft.Colors.GREEN_200,
                alignment=ft.Alignment.CENTER_LEFT,
                padding=10,
                content=ft.Icon(ft.Icons.CHECK, color=ft.Colors.GREEN_900),
            ),
            secondary_background=ft.Container(
                bgcolor=ft.Colors.RED_200,
                alignment=ft.Alignment.CENTER_RIGHT,
                padding=10,
                content=ft.Icon(ft.Icons.DELETE, color=ft.Colors.RED_900),
            ),
            content=ft.Container(
                height=52,
                border_radius=8,
                bgcolor=ft.Colors.SURFACE,
                border=ft.Border.all(1, ft.Colors.OUTLINE),
                alignment=ft.Alignment.CENTER,
                content=ft.Text("Dismiss me"),
            ),
        )

    def on_dismiss():
        slot.content = ft.Container(
            height=52,
            border_radius=8,
            bgcolor=ft.Colors.SURFACE,
            border=ft.Border.all(1, ft.Colors.OUTLINE_VARIANT),
            alignment=ft.Alignment.CENTER,
            content=ft.Text("Dismissed"),
        )
        status.value = f"Dismissed via {direction.name}"
        slot.update()
        status.update()

    def reset_item(_):
        slot.content = create_item()
        status.value = "Swipe the tile"
        slot.update()
        status.update()

    slot = ft.Container(content=create_item())

    return ft.Container(
        width=360,
        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(direction.name, weight=ft.FontWeight.BOLD),
                status,
                slot,
                ft.Button("Reset", on_click=reset_item),
            ],
        ),
    )


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

    page.appbar = ft.AppBar(title="DismissDirection Showcase")
    page.add(
        ft.SafeArea(
            content=ft.Column(
                controls=[
                    ft.Text("Try swipe directions to see which ones are allowed."),
                    ft.Row(
                        wrap=True,
                        spacing=12,
                        expand=True,
                        scroll=ft.ScrollMode.AUTO,
                        alignment=ft.MainAxisAlignment.CENTER,
                        controls=[
                            showcase_card(direction)
                            for direction in ft.DismissDirection
                        ],
                    ),
                ],
            ),
        )
    )


if __name__ == "__main__":
    ft.run(main)

枚举值 ​

名称类型默认值说明
NONE—'none'Disables swipe-to-dismiss gestures.
VERTICAL—'vertical'Allows dismissing by swiping vertically. Users can drag either up or down to dismiss.
HORIZONTAL—'horizontal'Allows dismissing by swiping horizontally. Users can drag either left or right to dismiss.
END_TO_START—'endToStart'Allows dismissing toward the end-to-start reading direction. For left-to-right locales this is right-to-left; for right-to-left locales this is left-to-right.
START_TO_END—'startToEnd'Allows dismissing toward the start-to-end reading direction. For left-to-right locales this is left-to-right; for right-to-left locales this is right-to-left.
UP—'up'Allows dismissing only by swiping upward.
DOWN—'down'Allows dismissing only by swiping downward.

关注我,学习大模型、大数据、Python等热门技术。