我们通常可以使用 Flet 的 Column 和 Row 控件来显示数据列表,但是如果列表包含数百、数千乃至上万个数据项目呢?—— 这时Column 和 Row 控件将变得迟缓,因为Flet会渲染所有项目,即使它们当前不可见。
一、案例学习
面对“大数据”,有何办法呢? 答案就是 用 大列表 ListView 。先看一下流畅的效果:
代码页简单,如下:
import flet as ft
def main(page: ft.Page):
page.title = "大数据列表演示"
lv = ft.ListView(expand=True, spacing=10)
for i in range(1000):
lv.controls.append(ft.Text(f"第 {i+1} 行"))
page.add(lv)
# 通过浏览器运行该程序
ft.app(target=main, view=ft.AppView.WEB_BROWSER)
二、知识要点
(一)上例中,代码 expand=True,这是让 ListView 占据页面上的所有可用空间,即扩展。
(二)ListView 是“按需渲染”其子控件,它只渲染当前显示区域的数据,从而加快了显示速度。ListView 可以是垂直(默认)或水平的,按照滚动方向一个接一个地显示。
(三)滚动性能可以通过设置所有项的固定高度或宽度(对于水平 ListView)来有效改善。可以通过设置绝对高度或宽度的 item_extent 属性或将所有子控件的高度或宽度设置为第一个子控件的高度或宽度来实现,方法是将 first_item_prototype 设置为 True。
(汇报完毕,感谢收看,收藏+点赞!)