说我有一堂课:
class Icons {
static const IconData threesixty = IconData(0xe577, fontFamily: 'MaterialIcons');
}
现在我有一个值为“ threesixty”的字符串变量:
String fieldName = "threesixty";
如何通过fieldName变量获取Icons类中的Threesixty的值?
我正在使用reflectable软件包,并且已经在混乱中使用了ClassMirrors的其他功能,但是不知道该怎么做。
答案 0 :(得分:6)
您想要的内容需要使用反射。在颤动下,由于树木摇晃,不支持反射。摇树是从应用程序包(apk,ipa)中删除未使用的代码以减小程序包大小的过程。当使用反射时,所有代码都可以隐式使用,因此flutter无法知道要删除哪些代码,因此他们选择不支持反射(在dart上下文中为镜像)。 如果可能,您应该尝试通过继承解决问题,或者根据您的特定问题,尝试使用静态代码生成。
编辑:您可以像这样调用可反射的静态吸气剂;
import 'package:reflectable/reflectable.dart';
class Reflector extends Reflectable {
const Reflector() : super(staticInvokeCapability);
}
const reflector = const Reflector();
@reflector
class ClassToReflect {
static double staticPropertyToInvoke = 15;
}
Main.dart
import 'package:reflectable/reflectable.dart';
import 'main.reflectable.dart';
void main() {
initializeReflectable();
ClassMirror x = reflector.reflectType(ClassToReflect);
var y = x.invokeGetter('staticPropertyToInvoke');
debugPrint(y);
}
P.S。 main.reflectable.dart是可反射包生成的文件。
答案 1 :(得分:-1)
据我所知,除非使用镜像库,否则这是不可能的。
请参阅: Get access to an object's property using bracket notation in dart