跳到主要内容

ListView

一个线性排列的可滚动控件列表。

ListView 是最常用的滚动控件。它在滚动方向上依次显示其子项。在交叉轴上,子项需要填充 ListView。

信息

对于大型列表(数千个项目),ListView 非常有效。在流畅滚动方面,建议优先使用它,而不是 ColumnRow

示例

Live example

自动滚动的 ListView

from time import sleep
import flet as ft

def main(page: ft.Page):
page.title = "自动滚动的 ListView"

lv = ft.ListView(expand=1, spacing=10, padding=20, auto_scroll=True)

count = 1

for i in range(0, 60):
lv.controls.append(ft.Text(f"行 {count}"))
count += 1

page.add(lv)

for i in range(0, 60):
sleep(1)
lv.controls.append(ft.Text(f"行 {count}"))
count += 1
page.update()

ft.app(target=main)

属性

auto_scroll

如果滚动条在子项更新时应自动移动到末尾,则为 True。必须为 False 才能使 scroll_to() 方法起作用。

cache_extent

缓存区域内的项目(在用户滚动时即将变为可见的区域之前或之后的区域)即使不可见也会被布局。 cacheExtent 描述了在前导边缘之前和尾部边缘之后,缓存区域延伸多少像素。

视口将尝试用 cache_extent 在前导边缘之前 + 主轴的尺寸 + 在尾部边缘之后覆盖的总尺寸。

clip_behavior

根据此选项,内容将被裁剪(或不裁剪)。 属性值是 ClipBehavior

默认值为 HARD_EDGE

controls

要在 ListView 内显示的 Control 列表。

divider_thickness

如果大于 0,则使用 Divider 作为 ListView 项之间的间距。

first_item_prototype

如果将第一项的尺寸用作所有其他项的“原型”,则为 True,即它们的高度或宽度将与第一项相同。默认为 False

horizontal

True 表示水平布局 ListView 项。

item_extent

优化渲染的项的固定高度或宽度(对于水平 ListView)。

on_scroll_interval

on_scroll 事件的节流间隔(以毫秒为单位)。默认值为 10

padding

要插入子项的空间量。

Padding 是 Padding 类的一个实例。

reverse

定义滚动视图是否以读取方向滚动。默认为 False

semantic_child_count

将提供语义信息的子项数。

spacing

ListView 项之间的 Divider 的高度。如果未指定,则项之间没有间距。

方法

scroll_to(offset, delta, key, duration, curve)

将滚动位置移动到绝对 offset、相对 delta 或跳转到指定 key 的控件。

有关方法详细信息和示例,请参见 Column.scroll_to()

事件

on_scroll

当用户更改滚动位置时触发。

事件处理程序参数是 OnScrollEvent 类的一个实例。