跳到主要内容

提示对话框 AlertDialog

一个遵循 Material Design 规范的警示对话框(AlertDialog)。

警示对话框用于向用户提醒需要确认的情况。警示对话框可以有一个可选的标题和一个可选的操作列表。标题显示在内容上方,操作显示在内容下方。

示例

实时示例

基本对话框和模态对话框

import flet as ft

def main(page: ft.Page):
page.title = "AlertDialog(警示对话框)示例"

dlg = ft.AlertDialog(
title=ft.Text("您好!"), on_dismiss=lambda e: print("对话框已关闭!")
)

def close_dlg(e):
dlg_modal.open = False
page.update()

dlg_modal = ft.AlertDialog(
modal=True,
title=ft.Text("请确认"),
content=ft.Text("您真的要删除这些文件吗?"),
actions=[
ft.TextButton("是", on_click=close_dlg),
ft.TextButton("否", on_click=close_dlg),
],
actions_alignment=ft.MainAxisAlignment.END,
on_dismiss=lambda e: print("模态对话框已关闭!"),
)

def open_dlg(e):
page.dialog = dlg
dlg.open = True
page.update()

def open_dlg_modal(e):
page.dialog = dlg_modal
dlg_modal.open = True
page.update()

page.add(
ft.ElevatedButton("打开对话框", on_click=open_dlg),
ft.ElevatedButton("打开模态对话框", on_click=open_dlg_modal),
)

ft.app(target=main)

属性

actions

对话框底部显示的操作(可选)集合。

通常这是一个由 TextButton 控件构成的列表。

actions_alignment

定义了操作的水平布局方式,与 Row.alignment 具有相同的规则。

属性值为默认为 MainAxisAlignment 枚举类型,其中默认值为 MainAxisAlignment.END

actions_padding

对话框底部操作区域的内边距。

通常用于提供操作按钮栏与对话框边缘之间的内边距。

如果没有操作,将不会提供内边距。按钮栏周围的内边距默认为零。

有关内边距和可能的值的更多信息,请参见 Container.padding

adaptive

如果值为 True,则根据目标平台是 iOS 还是 macOS 创建自适应的警告对话框。

在 iOS 和 macOS 上,会创建一个 CupertinoAlertDialog,它的功能和展示与 AlertDialog 相匹配,并且在 iOS 上呈现的图形符合预期。在其他平台上,会创建一个 Material 警告对话框。

默认值为 False。查看此处的使用示例。

content

对话框的(可选)内容,以较轻的字体显示在对话框中央。通常,这是一个Column ,其中包含对话框的Text 消息。

content_padding

内容周围的内边距。

如果没有内容,不会提供内边距。否则,提供20像素的上方的内边距,以将内容与标题分开,并提供24像素的左侧、右侧和底部的内边距,以将内容与对话框的其他边缘分开。

有关内边距和可能的值的更多信息,请参见 Container.padding

inset_padding

对话框本身周围的内边距。

此属性的默认值为对话框框框外部的横向40像素和垂直24像素。(padding.symmetric(vertical=40, horizontal=24)

有关内边距和可能的值的更多信息,请参见 Container.padding

指定是否可以通过点击对话框外部的区域来关闭对话框。

open

设置为 True 以显示对话框。

shape

对话框边框的形状。

值为以下实现类之一的实例:

  • StadiumBorder
  • RoundedRectangleBorder
    • radius - 边框半径,BorderRadius 类的实例或数字。
  • CircleBorder
  • BeveledRectangleBorder
    • radius - 边框半径,BorderRadius 类的实例或数字。
  • ContinuousRectangleBorder
    • radius - 边框半径,BorderRadius 类的实例或数字。

默认形状为 RoundedRectangleBorder,半径为 4.0。

title

对话框的(可选)标题,在对话框顶部以大字体显示。

通常是一个Text 控件。

title_padding

标题周围的内边距。

如果没有标题,不会提供内边距。否则,使用此内边距。

此属性默认为在标题的上方、左侧和右侧提供24像素的内边距。如果内容不是空的,那么不提供底部内边距(但参见 content_padding)。如果没有设置,那么在标题和操作之间添加额外的20像素的底部内边距。

有关内边距和可能的值的更多信息,请参见 Container.padding

事件

on_dismiss

对话框关闭时触发的事件。