gpt4 book ai didi

dart - Flutter First 应用程序

转载 作者:IT王子 更新时间:2023-10-29 06:55:08 26 4
gpt4 key购买 nike

我正在学习 Flutter 框架,想问一下谷歌教程中的第一个示例应用程序。也就是说,我想知道这段代码究竟是如何工作的。

Widget _buildSuggestions() {
return new ListView.builder(
padding: new EdgeInsets.all(6.0),
itemBuilder: (_, int i) {
if (i.isOdd)
return new Divider(
height: 1.0,
);

final int index = i ~/ 2;
print(index);
print('sug leng ${_suggestions.length}');
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10));
}
return _buildRow(_suggestions[index]);
});
}

单词是如何真正生成的。就像当我检查索引和 _suggestions 的长度时,它说我已经生成了 20 个单词,但是当我向下滑动时索引是 14,索引向上移动并且在某个时候,新单词是添加。它如何检测何时添加以及何时停止计算索引?如果有人能向我简要解释一下,我将不胜感激!谢谢!

最佳答案

首先,ListViewitemBuilder 被延迟调用。这意味着 ListView 只请求它需要的小部件。因此,当您向下滚动时,请求的索引会增加。

然后,实例化 ListView 的小部件拥有一个 _suggestions。这是一个建议列表。

问题是,当 ListView 尝试访问 _suggestions 中不可用的索引时,该代码会检测到它,然后向 插入另外 10 个建议_suggestions 返回之前。


虽然这段代码有效;如果您想要无限滚动行为,请不要使用此逻辑。这只有效,因为它显示模拟数据。但它不适用于来自服务器的数据。

一种更适合生产的方法是将 ListView 传递给 ScrollController .然后听那个 scrollcontroller 知道我们什么时候到达当前内容的结尾。

关于dart - Flutter First 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50865078/

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