import 'dart:mirrors';
const Tag = 'tag';
@Tag
void func() => print("hello");
class A {
@Tag
void func() => print("hello");
}
main() {
// top-level func
print(reflect(func).type.metadata);
//method
print(reflectClass(A).declarations[Symbol('func')].metadata.first.reflectee);
}
// output
//[]
//tag
顶级功能的元数据为空。 但是Class中的方法可以访问其元数据。 有什么方法可以获取顶级函数的元数据?
答案 0 :(得分:0)
import 'dart:mirrors';
const Tag = 'tag';
@Tag
void func() => print("hello");
class A {
@Tag
void func() => print("hello");
}
main() {
var mirrors = currentMirrorSystem();
// top-level func
var f = mirrors.isolate.rootLibrary.declarations[#func];
print(f.metadata.first.reflectee);
//method
print(reflectClass(A).declarations[Symbol('func')].metadata.first.reflectee);
// Closure on `func` has no metadate
print(reflect(func).type.metadata);
}
结果
tag
tag
[]
答案 1 :(得分:0)
我刚刚找到了一种访问顶级功能元数据的新方法。
import 'dart:mirrors';
const Tag = 'tag';
@Tag
void func() => print("hello");
main() {
ClosureMirror closureMirror = reflect(func);
print(closureMirror.function.metadata.first.reflectee);
}
答案 2 :(得分:0)
dart:mirrors
当然在Flutter中不起作用。