gpt4 book ai didi

function - Dart匿名功能混淆

转载 作者:行者123 更新时间:2023-12-03 03:41:19 26 4
gpt4 key购买 nike

我想解释一下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提供给该函数。

最佳答案

ListView的构造函数中,您要传递一个函数,列表 View 将保留该函数,也许是一些称为builderFunc的实例变量。在将来的某个时候,将通知列表 View 进行构建,并且将需要构建其子级。通过调用builderFunc来做到这一点,如下所示:

Widget jthChild = builderFunc(ctx, j);

其中 ctxj是调用者范围内的局部变量( ListView中的方法)。 builderFunc(您的匿名函数)将使用列表 View 传递给它的构建上下文构造并返回 j th小部件。列表 View 将使用不同的 j值多次调用您的函数。

关于function - Dart匿名功能混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382535/

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