使用Dart中的Type初始化实例

时间:2019-03-09 04:08:16

标签: types dart flutter

假设我有一些Type实例:

final strType = String;
final intType = int;

例如,我想初始化Type的实例,

final myString = strType(); // myString is String()

final myInt = new intType(); // myInt is int()

但是,编译器提出了strType isn't a function错误。

是否可以在Dart中初始化Type的实例?

2 个答案:

答案 0 :(得分:1)

这在语言级别是不可能的。反射是可能的,但是代码很复杂,要在网络上使用它或颤动它,需要代码生成。

可以考虑分配函数类型,而不是给变量分配insertLastType是一个匿名函数,可以创建() => SomeClassName()的实例。

答案 1 :(得分:0)

是的,这是可能的,但不适用于预定义的(内置)类型(类)。因为这些类型(类)可能不声明默认构造函数。

下面是如何使用用户定义的类型(通过类)的示例。

import 'dart:mirrors';

void main() {
  var fooType = Foo;
  var myFoo = reflectClass(fooType).newInstance(const Symbol(''), []).reflectee;
  print(myFoo.baz);
}

class Foo {
  int baz = 41;
}

结果:

41