Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the qualified name from a Type instance, in Dart?

I have a instance of Type, but I want its fully qualified name. How can I do this? I know I have to use Mirrors (Dart's reflection library).

like image 532
Seth Ladd Avatar asked Apr 19 '13 17:04

Seth Ladd


1 Answers

Use the new reflectClass top-level function from dart:mirrors.

Here's an example:

import 'dart:html';
import 'dart:mirrors';

class Awesome {
  // ...
}

void main() {
  var awesome = new Awesome();
  Type type = awesome.runtimeType;
  ClassMirror mirror = reflectClass(type);
  Symbol symbol = mirror.qualifiedName;
  String qualifiedName = MirrorSystem.getName(symbol);

  query('#name').text = qualifiedName;
}

The qualifiedName should be something like:

http://127.0.0.1:3030/Users/sethladd/dart/type_name/web/type_name.dart.Awesome

Note, this works in build 21753 or higher. Also, this doesn't currently work in dart2js yet. We plan to support it in dart2js.

like image 158
Seth Ladd Avatar answered Sep 29 '22 04:09

Seth Ladd