首页 > 解决方案 > Flutter - Dart - Reflectable 包:如何:获取类字段类型?从类/类型实例化对象?使用 Reflectable 设置字段值

问题描述

我开始知道飞镖镜在颤振中被禁用,但希望可能有一些替代方法来实现。不能在颤动中禁用镜子,这是一个重要且必须具备的功能。

import 'package:reflectable/mirrors.dart';
import 'package:reflectable/reflectable.dart';

const reflector = const Reflector();

class Reflector extends Reflectable
{
  const Reflector() : super(
    invokingCapability,
    typingCapability,
    reflectedTypeCapability,
  );
}

@reflector
class Dictionary
{
  String english, myLang;
  int index;
}

main() { 
   test(); 
}

test()
{
  ClassMirror classMirror = reflector.reflectType(Dictionary);

  classMirror.declarations.values.forEach((field)
  {
    VariableMirror variableMirror = field;
    /*??????????????????????????????????????????
    Now How To Get Field types i.e. String & int
    How to instantiate class object
    How to set fields values
    ???????????????????????????????????????????*/
  });
}

标签: flutterdart

解决方案


到目前为止,我能够知道字段类型:

  ClassMirror classMirror = reflector.reflectType(Dictionary);
  VariableMirror variableMirror = classMirror.declarations["english"] as VariableMirror;

  Type type = variableMirror.dynamicReflectedType;
  print("field: " + variableMirror.simpleName + " has type: " + type.toString());

现在剩下的:运行时对象实例化?如何设置实例化对象的字段值?


推荐阅读