You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:45:07