Dart中如何将函数作为参数传入类构造器?
Dart 接收函数类型构造参数的正确实现
你给出的示例代码存在两个核心问题:没有声明构造参数的类型、没有将传入的函数存储到类的成员属性中,无法在类实例化后调用。
最简实现方案
你可以先通过类型别名定义好函数的签名,再在类中声明对应类型的成员变量存储传入的函数,示例如下:
// 定义函数类型别名:接收可空int参数,返回int typedef ItemBuilder = int Function(int? index); class App { // 类成员变量,用于存储构造时传入的函数 final ItemBuilder itemBuilder; // 构造函数:必填命名参数,直接赋值给成员变量 App({required this.itemBuilder}); }
如果不想单独定义类型别名,也可以直接在成员变量声明处写完整的函数类型:
class App { final int Function(int? index) itemBuilder; App({required this.itemBuilder}); }
调用示例
void main() { // 实例化时传入符合签名的函数 final app = App( itemBuilder: (int? index) { return index ?? 1; }, ); // 调用传入的itemBuilder print(app.itemBuilder(3)); // 输出 3 print(app.itemBuilder(null)); // 输出 1 }
内容的提问来源于stack exchange,提问作者rabie_rabie
相关产品推荐
相关产品推荐

