Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.4k views
in Technique[技术] by (71.8m points)

dart 如何动态的 new 一个类?

例如我又三个类
ClassA ClassB ClassC
List a = [ClassA, ClassB, ClassC];

我想 a[index]();
但会报错。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
import 'dart:mirrors';

class Test1 {
  final test = 'test1';
}

class Test2 {}

void main() {
  List<dynamic> list = [Test1, Test2];
  print(list);
  dynamic test = list[0];
  print(Test1);
  print(test);
  // print(test[Symbol('')]);
  ClassMirror classMirror = reflectClass(test);

  print(classMirror);
  var newInstance=classMirror.newInstance(Symbol(''),[]);
  print(newInstance);
  print(newInstance.getField(Symbol('test')));
  print(newInstance.reflectee);
  print(Test1());
  print(newinstance.reflectee.test);
  print(Test1().test);
}

不过flutter下不支持dart:mirrors
https://github.com/flutter/fl...
类似问题中那种动态的newInstance代码应该是实现不了的


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...