CINXE.COM

dart:mirrors library - Dart API

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no"> <meta name="description" content="dart:mirrors library API docs, for the Dart programming language."> <title>dart:mirrors library - Dart API</title> <link rel="canonical" href="https://api.dart.dev/dart-mirrors/dart-mirrors-library.html"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,700;1,400&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet"> <link rel="stylesheet" href="../static-assets/github.css?v1"> <link rel="stylesheet" href="../static-assets/styles.css?v1"> <link rel="icon" href="../static-assets/favicon.png?v1"> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-VVQ8908SJ5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-VVQ8908SJ5'); </script> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap" as="style"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap"> <link rel="stylesheet" href="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.css"> </head> <body data-base-href="../" data-using-base-href="false" class="light-theme"> <div id="overlay-under-drawer"></div> <header id="title"> <span id="sidenav-left-toggle" class="material-symbols-outlined" role="button" tabindex="0">menu</span> <ol class="breadcrumbs gt-separated dark hidden-xs"> <li><a href="../index.html">Dart</a></li> <li class="self-crumb">dart:mirrors</li> </ol> <div class="self-name">dart:mirrors</div> <form class="search navbar-right" role="search"> <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search..."> </form> <div class="toggle" id="theme-button" title="Toggle brightness"> <label for="theme"> <input type="checkbox" id="theme" value="light-theme"> <span id="dark-theme-button" class="material-symbols-outlined"> dark_mode </span> <span id="light-theme-button" class="material-symbols-outlined"> light_mode </span> </label> </div> </header> <main> <div id="dartdoc-main-content" class="main-content" data-above-sidebar="" data-below-sidebar="dart-mirrors&#47;dart-mirrors-library-sidebar.html"> <div> <div id="external-links" class="btn-group"><a title="View source code" class="source-link" href="https://github.com/dart-lang/sdk/blob/88c9758ef131d430d8ce595c6bfb4c90574d3ddd/sdk/lib/mirrors/mirrors.dart#L55"><span class="material-symbols-outlined">description</span></a></div> <h1> <span class="kind-library">dart:mirrors</span> library </h1> </div> <section class="desc markdown"> <p>Basic reflection in Dart, with support for introspection and dynamic invocation.</p> <p><em>Introspection</em> 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.</p> <p><em>Dynamic invocation</em> 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).</p> <h2 id="how-to-interpret-this-librarys-documentation">How to interpret this library's documentation</h2> <p>As a rule, the names of Dart declarations are represented using instances of class <a href="../dart-core/Symbol-class.html">Symbol</a>. Whenever the doc speaks of an object <em>s</em> of class <a href="../dart-core/Symbol-class.html">Symbol</a> denoting a name, it means the string that was used to construct <em>s</em>.</p> <p>The documentation frequently abuses notation with Dart pseudo-code such as <code>o.x(a)</code>, where o and a are defined to be objects; what is actually meant in these cases is <code>o'.x(a')</code> where <em>o'</em> and <em>a'</em> are Dart variables bound to <em>o</em> and <em>a</em> respectively. Furthermore, <em>o'</em> and <em>a'</em> are assumed to be fresh variables (meaning that they are distinct from any other variables in the program).</p> <p>Sometimes the documentation refers to <em>serializable</em> 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.</p> <h2 id="status-unstable">Status: Unstable</h2> <p>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.</p> </section> <section class="summary offset-anchor" id="classes"> <h2>Classes</h2> <dl> <dt id="ClassMirror"> <span class="name "><a href="../dart-mirrors/ClassMirror-class.html">ClassMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/ClassMirror-class.html">ClassMirror</a> reflects a Dart language class. </dd> <dt id="ClosureMirror"> <span class="name "><a href="../dart-mirrors/ClosureMirror-class.html">ClosureMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/ClosureMirror-class.html">ClosureMirror</a> reflects a closure. </dd> <dt id="CombinatorMirror"> <span class="name "><a href="../dart-mirrors/CombinatorMirror-class.html">CombinatorMirror</a></span> </dt> <dd> A mirror on a show/hide combinator declared on a library dependency. </dd> <dt id="DeclarationMirror"> <span class="name "><a href="../dart-mirrors/DeclarationMirror-class.html">DeclarationMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/DeclarationMirror-class.html">DeclarationMirror</a> reflects some entity declared in a Dart program. </dd> <dt id="FunctionTypeMirror"> <span class="name "><a href="../dart-mirrors/FunctionTypeMirror-class.html">FunctionTypeMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/FunctionTypeMirror-class.html">FunctionTypeMirror</a> represents the type of a function in the Dart language. </dd> <dt id="InstanceMirror"> <span class="name "><a href="../dart-mirrors/InstanceMirror-class.html">InstanceMirror</a></span> </dt> <dd> An <a href="../dart-mirrors/InstanceMirror-class.html">InstanceMirror</a> reflects an instance of a Dart language object. </dd> <dt id="IsolateMirror"> <span class="name "><a href="../dart-mirrors/IsolateMirror-class.html">IsolateMirror</a></span> </dt> <dd> An <a href="../dart-mirrors/IsolateMirror-class.html">IsolateMirror</a> reflects an isolate. </dd> <dt id="LibraryDependencyMirror"> <span class="name "><a href="../dart-mirrors/LibraryDependencyMirror-class.html">LibraryDependencyMirror</a></span> </dt> <dd> A mirror on an import or export declaration. </dd> <dt id="LibraryMirror"> <span class="name "><a href="../dart-mirrors/LibraryMirror-class.html">LibraryMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/LibraryMirror-class.html">LibraryMirror</a> reflects a Dart language library, providing access to the variables, functions, and classes of the library. </dd> <dt id="MethodMirror"> <span class="name "><a href="../dart-mirrors/MethodMirror-class.html">MethodMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/MethodMirror-class.html">MethodMirror</a> reflects a Dart language function, method, constructor, getter, or setter. </dd> <dt id="Mirror"> <span class="name "><a href="../dart-mirrors/Mirror-class.html">Mirror</a></span> </dt> <dd> A <a href="../dart-mirrors/Mirror-class.html">Mirror</a> reflects some Dart language entity. </dd> <dt id="MirrorSystem"> <span class="name "><a href="../dart-mirrors/MirrorSystem-class.html">MirrorSystem</a></span> </dt> <dd> A <a href="../dart-mirrors/MirrorSystem-class.html">MirrorSystem</a> is the main interface used to reflect on a set of associated libraries. </dd> <dt id="ObjectMirror"> <span class="name "><a href="../dart-mirrors/ObjectMirror-class.html">ObjectMirror</a></span> </dt> <dd> An <a href="../dart-mirrors/ObjectMirror-class.html">ObjectMirror</a> is a common superinterface of <a href="../dart-mirrors/InstanceMirror-class.html">InstanceMirror</a>, <a href="../dart-mirrors/ClassMirror-class.html">ClassMirror</a>, and <a href="../dart-mirrors/LibraryMirror-class.html">LibraryMirror</a> that represents their shared functionality. </dd> <dt id="ParameterMirror"> <span class="name "><a href="../dart-mirrors/ParameterMirror-class.html">ParameterMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/ParameterMirror-class.html">ParameterMirror</a> reflects a Dart formal parameter declaration. </dd> <dt id="SourceLocation"> <span class="name "><a href="../dart-mirrors/SourceLocation-class.html">SourceLocation</a></span> </dt> <dd> A <a href="../dart-mirrors/SourceLocation-class.html">SourceLocation</a> describes the span of an entity in Dart source code. </dd> <dt id="TypedefMirror"> <span class="name "><a href="../dart-mirrors/TypedefMirror-class.html">TypedefMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/TypedefMirror-class.html">TypedefMirror</a> represents a typedef in a Dart language program. </dd> <dt id="TypeMirror"> <span class="name "><a href="../dart-mirrors/TypeMirror-class.html">TypeMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/TypeMirror-class.html">TypeMirror</a> reflects a Dart language class, typedef, function type or type variable. </dd> <dt id="TypeVariableMirror"> <span class="name "><a href="../dart-mirrors/TypeVariableMirror-class.html">TypeVariableMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/TypeVariableMirror-class.html">TypeVariableMirror</a> represents a type parameter of a generic type. </dd> <dt id="VariableMirror"> <span class="name "><a href="../dart-mirrors/VariableMirror-class.html">VariableMirror</a></span> </dt> <dd> A <a href="../dart-mirrors/VariableMirror-class.html">VariableMirror</a> reflects a Dart language variable declaration. </dd> </dl> </section> <section class="summary offset-anchor" id="functions"> <h2>Functions</h2> <dl class="callables"> <dt id="currentMirrorSystem" class="callable"> <span class="name"><a href="../dart-mirrors/currentMirrorSystem.html">currentMirrorSystem</a></span><span class="signature">(<wbr>) <span class="returntype parameter">&#8594; <a href="../dart-mirrors/MirrorSystem-class.html">MirrorSystem</a></span> </span> </dt> <dd> Returns a <a href="../dart-mirrors/MirrorSystem-class.html">MirrorSystem</a> for the current isolate. </dd> <dt id="reflect" class="callable"> <span class="name"><a href="../dart-mirrors/reflect.html">reflect</a></span><span class="signature">(<wbr><span class="parameter" id="reflect-param-reflectee"><span class="type-annotation">dynamic</span> <span class="parameter-name">reflectee</span></span>) <span class="returntype parameter">&#8594; <a href="../dart-mirrors/InstanceMirror-class.html">InstanceMirror</a></span> </span> </dt> <dd> Reflects an instance. </dd> <dt id="reflectClass" class="callable"> <span class="name"><a href="../dart-mirrors/reflectClass.html">reflectClass</a></span><span class="signature">(<wbr><span class="parameter" id="reflectClass-param-key"><span class="type-annotation"><a href="../dart-core/Type-class.html">Type</a></span> <span class="parameter-name">key</span></span>) <span class="returntype parameter">&#8594; <a href="../dart-mirrors/ClassMirror-class.html">ClassMirror</a></span> </span> </dt> <dd> Reflects a class declaration. </dd> <dt id="reflectType" class="callable"> <span class="name"><a href="../dart-mirrors/reflectType.html">reflectType</a></span><span class="signature">(<wbr><span class="parameter" id="reflectType-param-key"><span class="type-annotation"><a href="../dart-core/Type-class.html">Type</a></span> <span class="parameter-name">key</span>, [</span><span class="parameter" id="reflectType-param-typeArguments"><span class="type-annotation"><a href="../dart-core/List-class.html">List</a><span class="signature">&lt;<wbr><span class="type-parameter"><a href="../dart-core/Type-class.html">Type</a></span>&gt;</span>?</span> <span class="parameter-name">typeArguments</span></span>]) <span class="returntype parameter">&#8594; <a href="../dart-mirrors/TypeMirror-class.html">TypeMirror</a></span> </span> </dt> <dd> Reflects the type represented by <code>key</code>. </dd> </dl> </section> <section class="summary offset-anchor" id="exceptions"> <h2>Exceptions / Errors</h2> <dl> <dt id="AbstractClassInstantiationError"> <span class="name "><a href="../dart-mirrors/AbstractClassInstantiationError-class.html">AbstractClassInstantiationError</a></span> </dt> <dd> Error thrown when trying to instantiate an abstract class. </dd> </dl> </section> </div> <!-- /.main-content --> <div id="dartdoc-sidebar-left" class="sidebar sidebar-offcanvas-left"> <!-- The search input and breadcrumbs below are only responsively visible at low resolutions. --> <header id="header-search-sidebar" class="hidden-l"> <form class="search-sidebar" role="search"> <input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search..."> </form> </header> <ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav"> <li><a href="../index.html">Dart</a></li> <li class="self-crumb">dart:mirrors</li> </ol> <h5><span class="package-name">Dart</span> <span class="package-kind">SDK</span></h5> <ol> <li class="section-title">Libraries</li> <li class="section-subtitle">Core</li> <li class="section-subitem"><a href="../dart-async/dart-async-library.html">dart:async</a></li> <li class="section-subitem"><a href="../dart-collection/dart-collection-library.html">dart:collection</a></li> <li class="section-subitem"><a href="../dart-convert/dart-convert-library.html">dart:convert</a></li> <li class="section-subitem"><a href="../dart-core/dart-core-library.html">dart:core</a></li> <li class="section-subitem"><a href="../dart-developer/dart-developer-library.html">dart:developer</a></li> <li class="section-subitem"><a href="../dart-math/dart-math-library.html">dart:math</a></li> <li class="section-subitem"><a href="../dart-typed_data/dart-typed_data-library.html">dart:typed_data</a></li> <li class="section-subtitle">VM</li> <li class="section-subitem"><a href="../dart-ffi/dart-ffi-library.html">dart:ffi</a></li> <li class="section-subitem"><a href="../dart-io/dart-io-library.html">dart:io</a></li> <li class="section-subitem"><a href="../dart-isolate/dart-isolate-library.html">dart:isolate</a></li> <li class="section-subitem"><a href="../dart-mirrors/dart-mirrors-library.html">dart:mirrors</a></li> <li class="section-subtitle">Web</li> <li class="section-subitem"> <a href="https:&#47;&#47;pub.dev&#47;documentation&#47;web&#47;latest&#47;" target="_blank"> package:web <span class="material-symbols-outlined">open_in_new</span> </a> </li> <li class="section-subitem"><a href="../dart-js_interop/dart-js_interop-library.html">dart:js_interop</a></li> <li class="section-subitem"><a href="../dart-js_interop_unsafe/dart-js_interop_unsafe-library.html">dart:js_interop_unsafe</a></li> <li class="section-subtitle">Web (Legacy)</li> <li class="section-subitem"> <a href="https:&#47;&#47;pub.dev&#47;documentation&#47;js&#47;latest&#47;" target="_blank"> package:js <span class="material-symbols-outlined">open_in_new</span> </a> </li> <li class="section-subitem"><a href="../dart-html/dart-html-library.html">dart:html</a></li> <li class="section-subitem"><a href="../dart-indexed_db/dart-indexed_db-library.html">dart:indexed_db</a></li> <li class="section-subitem"><a href="../dart-js/dart-js-library.html">dart:js</a></li> <li class="section-subitem"><a href="../dart-js_util/dart-js_util-library.html">dart:js_util</a></li> <li class="section-subitem"><a href="../dart-svg/dart-svg-library.html">dart:svg</a></li> <li class="section-subitem"><a href="../dart-web_audio/dart-web_audio-library.html">dart:web_audio</a></li> <li class="section-subitem"><a href="../dart-web_gl/dart-web_gl-library.html">dart:web_gl</a></li> </ol> </div> <div id="dartdoc-sidebar-right" class="sidebar sidebar-offcanvas-right"> <h5>dart:mirrors library</h5> </div><!--/sidebar-offcanvas-right--> </main> <footer> <span class="no-break"> Dart 3.5.4 </span> <span class="glue-footer"> <span class="no-break"> | <a href="https://dart.dev/terms" title="Terms of use">Terms</a> </span> <span class="no-break"> | <a href="https://policies.google.com/privacy" target="_blank" rel="noopener" title="Privacy policy" class="no-automatic-external">Privacy</a> </span> <span class="no-break"> | <a href="https://dart.dev/security" title="Security philosophy and practices">Security</a> </span> <div class="copyright" style="font-size: 0.9em; color: darkgrey; margin-top: 0.5em;"> Except as otherwise noted, this site is licensed under a <a style="color: darkgrey;" href="https://creativecommons.org/licenses/by/4.0/"> Creative Commons Attribution 4.0 International License</a> and code samples are licensed under the <a style="color: darkgrey;" href="https://opensource.org/licenses/BSD-3-Clause" class="no-automatic-external"> 3-Clause BSD License</a> </div> </span> </footer> <script src="../static-assets/highlight.pack.js?v1"></script> <script src="../static-assets/docs.dart.js"></script> <button aria-hidden="true" class="glue-footer__link glue-cookie-notification-bar-control"> Cookies management controls </button> <script src="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.js" data-glue-cookie-notification-bar-category="2B"> </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10