Dart匿名功能混淆

时间:2019-03-27 16:49:30

标签: function dart flutter

我想解释一下Dart中的匿名函数以及如何将其作为参数传递给其他函数。

该示例演示了波纹管来自flutter.dev的Write your first app

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

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

此处的匿名函数是itemBuilder。其类型为{(BuildContext, int) → Widget itemBuilder}

如果其类型为{() → Widget itemBuilder},我可以理解在运行时将执行该函数的主体。但是现在有了参数,我不知道如何将BuildContextint提供给函数。

1 个答案:

答案 0 :(得分:0)

str_replace_all(y4, fixed("."),"_") [1] "yes i do_" 的构造函数中,您要传递一个函数,列表视图将保留该函数,也许是一个名为ListView的实例变量。在将来的某个时候,将通知列表视图进行构建,并且将需要构建其子级。可以通过这样调用builderFunc来做到这一点:

builderFunc

其中Widget jthChild = builderFunc(ctx, j); ctx是调用方范围内的局部变量(j中的方法)。 ListView(您的匿名函数)将使用列表视图传递给它的构建上下文来构造并返回第builderFunc个小部件。列表视图将使用不同的j值多次调用您的函数。