Android 颤振教程

Android 颤振教程,android,dart,flutter,Android,Dart,Flutter,我正在学习flatter.io中提供的教程 在本教程的第四部分中,我很难理解以下段落: Widget _buildSuggestions() { return ListView.builder( padding: const EdgeInsets.all(16.0), itemBuilder: /*1*/ (context, i) { if (i.isOdd) return Divider(); /*2*/ final index = i ~/ 2; /*3*/

我正在学习flatter.io中提供的教程 在本教程的第四部分中,我很难理解以下段落:

Widget _buildSuggestions() {
  return ListView.builder(
  padding: const EdgeInsets.all(16.0),
  itemBuilder: /*1*/ (context, i) {
    if (i.isOdd) return Divider(); /*2*/

    final index = i ~/ 2; /*3*/
    if (index >= _suggestions.length) {
      _suggestions.addAll(generateWordPairs().take(10)); /*4*/
    }
    return _buildRow(_suggestions[index]);
  });
}

具体如下:

final index = i ~/ 2; /*3*/
有人能解释一下插入这条线的目的吗


到教程页面。

将使用不同的
i
值多次调用
itemBuilder
lambda。当
i
为奇数(1、3、5、7,…)时,它将返回一个
除法器。这就给我们留下了偶数(0,2,4,6,…)的情况。行
index=i~/2
意味着将
i
除以2(使用整数数学)并分配给
索引
,现在当然是0、1、2、3等

它被用作
建议
列表
(又称数组)的索引


它将交替显示一行行建议和分隔符。

嘿,我对颤振还不熟悉。我在ListView.builder中查看了一些教程,它们也必须通过长度。但在这方面,它们不是传递长度,所以它们是如何计算行的。?如果有人知道,请解释。在这个问题上,列表是无限的;如果
列表视图
要求一个尚不存在的行,则生成器会在此处添加更多行:
\u suggestions.addAll
。如果添加
itemCount
,则传递给构建器的最大
索引
受此限制。见: