Flutter - 如何从类型实例化对象

jer*_*nho 9 dart flutter

我对最初的问题表示歉意。我越来越糊涂了。这是我的实际问题。

我有一种情况,我需要使用一些定义的类作为类型对象Type并实例化它的对象实例。至于现在,我正在使用自定义的静态实例化器函数来调用构造函数,并且运行良好。所以我可以调用Function.apply()来创建一个对象。而不是这样做,有什么方法可以使用类Type来模拟类的构造函数。


我尝试了什么?他们说要使用Mirror,这是 Dart 反射的解决方案。

import 'dart:mirrors' 因错误而失败

URI 的目标不存在

或者至少如果它还没有准备好,我不知道从哪里拿到包裹。

import 'package:reflectable/mirrors.dart'来自git://github.com/dart-lang/reflectable.git 的包只定义了所有已Mirror实现的类,但reflect缺少函数。

lrn*_*lrn 8

您不能从Type表示类的对象创建类的实例,至少在没有镜像的情况下不能(并且 Flutter 和 Web 平台都不支持镜像)。

你不能撕掉一个构造函数(但是,我希望我们会在某个时候添加这个特性),所以创建一个调用构造函数的静态辅助函数并传递辅助函数的选项是当前最好的解决方案。

如果你知道这样一个函数需要的参数数量,你就不需要使用Function.apply,你可以直接调用它。


Xav*_*ier 5

如果不添加括号,您可以删除一个函数()。你不需要dart:mirror

void main() {
  // Tear off a global function
  Function myFunction = MyClass.someStaticFunction;

  // Call it statically
  myFunction('arg');

  // Call it dynamically
  Function.apply(myFunction, ['arg']);

  // Tear it off with a precise Function Type
  void Function(String) myFunction2 = MyClass.someStaticFunction;
}

class MyClass {
  static void someStaticFunction(String someArg) {
    print('someStaticFunction $someArg');
  }
}
Run Code Online (Sandbox Code Playgroud)