gpt4 book ai didi

flutter - ListView.builder按需创建窗口小部件是什么意思?

转载 作者:行者123 更新时间:2023-12-03 02:56:15 27 4
gpt4 key购买 nike

flutter's official documentation:

ListView.builder creates a scrollable, linear array of widgets that are created on demand. This constructor is appropriate for list views with a large (or infinite) number of children because the builder is called only for those children that are actually visible.



我正在做一些实验,以了解其工作原理并了解它是否仅创建了实际上可见的小部件。

我写了这个简单的代码:
List<int> numbers = [1,2,3,4,5,6,7,8,9];

void test(){
print("one widget created"+DateTime.now().toString());
}

Widget build(BuildContext context) {
return Container(
height: 300,
child: ListView.builder(
itemBuilder: (ctx, index){
test();
return Card(
Text("number "+numbers[index].toString())
);
}

现在从理论上讲,如果屏幕上显示的Cards的最大数量为3,则在控制台中我应该只读取3条消息,但是如果执行代码,我将在控制台中看到9条消息,这意味着该功能已执行9次而不是预期的3。
那么,什么是按需创建窗口小部件?

最佳答案

是的,您在这里是正确的,ListView.builder不会创建3个元素,而是9个元素,因为它在屏幕的顶部和底部保留了一些缓冲区以保持fps。假设它仅创建了3个项目,并且用户以高速滚动,则滚动会滞后,因为Flutter需要先创建要显示的项目,然后将其渲染为,这样可以避免这些类型的情况,它已经保留了一定数量的缓冲区。它按需创建小部件,这是正确的,让我们举个例子,如果有1000个项目需要显示,一次只能显示3个,那么Flutter不会创建1000个小部件对象,而是像上面所说的那样创建只有9,并且随着用户滚动它会破坏并创建新的。

关于flutter - ListView.builder按需创建窗口小部件是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58097736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com