Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.5k 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 Reply

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代码应该是实现不了的


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...