Skip to content

dart:mirrors

Basic reflection in Dart, with support for introspection and dynamic invocation.

Introspection is that subset of reflection by which a running program can examine its own structure. For example, a function that prints out the names of all the members of an arbitrary object.

Dynamic invocation refers the ability to evaluate code that has not been literally specified at compile time, such as calling a method whose name is provided as an argument (because it is looked up in a database, or provided interactively by the user).

How to interpret this library's documentation

As a rule, the names of Dart declarations are represented using instances of class Symbol. Whenever the doc speaks of an object s of class Symbol denoting a name, it means the string that was used to construct s.

The documentation frequently abuses notation with Dart pseudo-code such as o.x(a), where o and a are defined to be objects; what is actually meant in these cases is o'.x(a') where o' and a' are Dart variables bound to o and a respectively. Furthermore, o' and a' are assumed to be fresh variables (meaning that they are distinct from any other variables in the program).

Sometimes the documentation refers to serializable objects. An object is serializable across isolates if and only if it is an instance of num, bool, String, a list of objects that are serializable across isolates, or a map with keys and values that are all serializable across isolates.

Status: Unstable

The dart:mirrors library is unstable and its API might change slightly as a result of user feedback. This library is only supported by the Dart VM and only available on some platforms.

Classes

ClassDescription
ClassMirrorA ClassMirror reflects a Dart language class.
ClosureMirrorA ClosureMirror reflects a closure.
CombinatorMirrorA mirror on a show/hide combinator declared on a library dependency.
DeclarationMirrorA DeclarationMirror reflects some entity declared in a Dart program.
FunctionTypeMirrorA FunctionTypeMirror represents the type of a function in the Dart language.
InstanceMirrorAn InstanceMirror reflects an instance of a Dart language object.
IsolateMirrorAn IsolateMirror reflects an isolate.
LibraryDependencyMirrorA mirror on an import or export declaration.
LibraryMirrorA LibraryMirror reflects a Dart language library, providing access to the variables, functions, and classes of the library.
MethodMirrorA MethodMirror reflects a Dart language function, method, constructor, getter, or setter.
MirrorA Mirror reflects some Dart language entity.
MirrorSystemA MirrorSystem is the main interface used to reflect on a set of associated libraries.
ObjectMirrorAn ObjectMirror is a common superinterface of InstanceMirror, ClassMirror, and LibraryMirror that represents their shared functionality.
ParameterMirrorA ParameterMirror reflects a Dart formal parameter declaration.
SourceLocationA SourceLocation describes the span of an entity in Dart source code.
TypedefMirrorA TypedefMirror represents a typedef in a Dart language program.
TypeMirrorA TypeMirror reflects a Dart language class, typedef, function type or type variable.
TypeVariableMirrorA TypeVariableMirror represents a type parameter of a generic type.
VariableMirrorA VariableMirror reflects a Dart language variable declaration.

Exceptions

ExceptionDescription
AbstractClassInstantiationErrorError thrown when trying to instantiate an abstract class.

Functions

FunctionDescription
currentMirrorSystemReturns a MirrorSystem for the current isolate.
reflectReflects an instance.
reflectClassReflects a class declaration.
reflectTypeReflects the type represented by key.