Dart 颤振第一应用程序
我正在学习颤振框架,想了解一下谷歌教程中的第一个示例应用程序。也就是说,我想知道这段代码到底是如何工作的Dart 颤振第一应用程序,dart,flutter,Dart,Flutter,我正在学习颤振框架,想了解一下谷歌教程中的第一个示例应用程序。也就是说,我想知道这段代码到底是如何工作的 Widget _buildSuggestions() { return new ListView.builder( padding: new EdgeInsets.all(6.0), itemBuilder: (_, int i) { if (i.isOdd) return new Divider(
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]);
});
}
这些词是如何产生的。比如,当我检查索引和
\u建议的长度时,它表示我已经生成了20个单词,但当我向下滑动时,索引是14。索引正在向上移动,并且在某个点上,添加了新单词。它如何检测何时添加和何时停止计算索引?如果有人能简单地向我解释一下,我将不胜感激!!谢谢 首先,ListView
的itemBuilder
被延迟调用。这意味着ListView
只请求它需要的小部件。
因此,向下滚动时,请求的索引会增加
然后,实例化列表视图的小部件具有\u建议
。这是一个建议列表
问题是,当ListView
试图访问\u suggestions
中不可用的索引时,代码会检测到它,然后在返回它之前向\u suggestions
插入另外10条建议
当这个代码工作时;如果您希望具有无限滚动行为,请不要使用此逻辑。这仅适用于显示模拟数据。但它不能处理来自服务器的数据
一种更适合生产的方法是通过listview。然后听scrollcontroller,知道我们何时到达当前内容的末尾 非常感谢您的解释!