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

Dart:如何将多参数函数类型赋值给Type变量?

解决Dart中函数类型赋值给Type变量的问题

可行解决方法

1. 局部typedef(Dart 2.13+)

Dart 2.13及之后版本支持在函数内部定义typedef,可避开全局作用域的限制:

void main() {
  typedef Foo = int Function(int);
  Type fooType = Foo;
  print(fooType); // 输出: int Function(int)
}

2. 泛型辅助函数获取类型对象

如果无法使用局部typedef,可通过泛型函数间接提取类型对象:

Type getType<T>() => T;

void main() {
  Type fooType = getType<int Function(int)>();
  print(fooType); // 输出: int Function(int)
}

原因说明

直接写Type foo = int Function(int)报错的核心原因:int Function(int)是类型字面量,而Type变量需要接收的是类型对象。Dart不会自动将类型字面量转换为对应的Type对象,必须通过typedef别名或者泛型函数的方式,间接获取类型对象。

内容的提问来源于stack exchange,提问作者Anton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:36:18