创建一个无限循环的列表
这里说列表有两种,第一个是说的数据结构,也就是类似于数组,用于存储数据。第二种是能够在手机上显示的一行一行的表。
我们要改动第二个类。
class RandomWordsState extends State<RandomWords> {
// Add the next two lines.
final List<WordPair> _suggestions = <WordPair>[];
final TextStyle _biggerFont = const TextStyle(fontSize: 18.0);
...
}
上面添加的代码只是建立一个空的数据结构列表,用于存储随机产生的单词对。
Widget _buildSuggestions() {
return new ListView.builder(
padding: const EdgeInsets.all(16.0), # 规定了类表padding的宽度
// 为每个word pairing调用一次itemBuilder回调函数,然后放到ListTile中。
// 对于偶数行, 函数为每个word pairing添加一个ListTile(瓦片). 对于奇数行, 函数添加一个Divider用来区分两个条目。
itemBuilder: (BuildContext _context, int i) {
// 为ListView中的每一行前面添加一个像素高度的divier
if (i.isOdd) {
return new Divider();
}
// 计算实际单词对的数量
// 在ListView中,减去divider widgets的数量.
final int index = i ~/ 2;
// 如果已经达到了单词对的结尾,就在添加10个进来
if (index >= _suggestions.length) {
// 在产生10个添加到list中。
_suggestions.addAll(generateWordPairs().take(10));
}
return _buildRow(_suggestions[index]);
}
);
}
itemBuilder
就是一个回调函数