<!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, initial-scale=1">
  <meta name="generator" content="made with love by dartdoc 0.8.1-dev">
  <title>Deprecated class - ex library - Dart API</title>
  <!-- required because all the links are pseudo-absolute -->
  <base href="..">

  <link href='https://fonts.googleapis.com/css?family=Source+Code+Pro|Roboto:500,400italic,300,400' rel='stylesheet' type='text/css'>
  <link rel="stylesheet" href="static-assets/prettify.css">
  <link rel="stylesheet" href="static-assets/css/bootstrap.min.css">
  <link rel="stylesheet" href="static-assets/styles.css">

  <meta name="description" content="API docs for the Deprecated class from the ex library, for the Dart programming language.">
  <link rel="icon" href="static-assets/favicon.png">

  <!-- Do not remove placeholder -->
  <!-- Header Placeholder -->
</head>

<body>

<div id="overlay-under-drawer"></div>

<header class="container-fluid" id="title">
  <nav class="navbar navbar-fixed-top">
    <div class="container">
      <div class="row">
        <div class="col-sm-12 contents">
          <button id="sidenav-left-toggle" type="button">&nbsp;</button>
          <ol class="breadcrumbs gt-separated hidden-xs">
            <li><a href="index.html">test_package</a></li>
            <li><a href="ex/ex-library.html">ex</a></li>
            <li class="self-crumb">Deprecated</li>
          </ol>
          <div class="self-name">Deprecated</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> <!-- /col -->
      </div> <!-- /row -->
    </div> <!-- /container -->
  </nav>

  <div class="container masthead">
    <div class="row">
      <div class="col-sm-12 contents">
        <ol class="breadcrumbs gt-separated visible-xs">
          <li><a href="index.html">test_package</a></li>
          <li><a href="ex/ex-library.html">ex</a></li>
          <li class="self-crumb">Deprecated</li>
        </ol>
        <div class="title-description">
          <h1 class="title">
            <span class="kind">class</span> Deprecated
          </h1>
        </div>
        <ul class="subnav">
          <li><a href="ex/Deprecated-class.html#instance-properties">Properties</a></li>
          <li><a href="ex/Deprecated-class.html#constructors">Constructors</a></li>
          <li><a href="ex/Deprecated-class.html#operators">Operators</a></li>
          <li><a href="ex/Deprecated-class.html#instance-methods">Methods</a></li>
        </ul>
      </div> <!-- /col -->
    </div> <!-- /row -->
  </div> <!-- /container -->

</header>

<div class="container body">
  <div class="row">

  <div class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
    <h5><a href="index.html">test_package</a></h5>
    <h5><a href="ex/ex-library.html">ex</a></h5>

    <ol>
      <li class="section-title"><a href="ex/ex-library.html#constants">Constants</a></li>
      <li><a href="ex/COLOR.html">COLOR</a></li>
      <li><a href="ex/COLOR_GREEN.html">COLOR_GREEN</a></li>
      <li><a href="ex/COLOR_ORANGE.html">COLOR_ORANGE</a></li>
      <li><a href="ex/COMPLEX_COLOR.html">COMPLEX_COLOR</a></li>
      <li><a href="ex/deprecated.html">deprecated</a></li>
      <li><a href="ex/incorrectDocReference.html">incorrectDocReference</a></li>
      <li><a href="ex/incorrectDocReferenceFromEx.html">incorrectDocReferenceFromEx</a></li>
      <li><a href="ex/MY_CAT.html">MY_CAT</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#typedefs">Typedefs</a></li>
      <li><a href="ex/processMessage.html">processMessage</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#properties">Properties</a></li>
      <li><a href="ex/number.html">number</a></li>
      <li><a href="ex/y.html">y</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#functions">Functions</a></li>
      <li><a href="ex/function1.html">function1</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#enums">Enums</a></li>
      <li><a href="ex/Animal-class.html">Animal</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#classes">Classes</a></li>
      <li><a href="ex/Apple-class.html">Apple</a></li>
      <li><a href="ex/B-class.html">B</a></li>
      <li><a href="ex/Cat-class.html">Cat</a></li>
      <li><a href="ex/CatString-class.html">CatString</a></li>
      <li><a href="ex/ConstantCat-class.html">ConstantCat</a></li>
      <li><a href="ex/DateTime-class.html">DateTime</a></li>
      <li><a href="ex/Deprecated-class.html">Deprecated</a></li>
      <li><a href="ex/Dog-class.html">Dog</a></li>
      <li><a href="ex/E-class.html">E</a></li>
      <li><a href="ex/F-class.html">F</a></li>
      <li><a href="ex/ForAnnotation-class.html">ForAnnotation</a></li>
      <li><a href="ex/HasAnnotation-class.html">HasAnnotation</a></li>
      <li><a href="ex/Helper-class.html">Helper</a></li>
      <li><a href="ex/Klass-class.html">Klass</a></li>
      <li><a href="ex/PublicClassExtendsPrivateClass-class.html">PublicClassExtendsPrivateClass</a></li>
      <li><a href="ex/PublicClassImplementsPrivateInterface-class.html">PublicClassImplementsPrivateInterface</a></li>
      <li><a href="ex/ShapeType-class.html">ShapeType</a></li>
      <li><a href="ex/SpecializedDuration-class.html">SpecializedDuration</a></li>
    
      <li class="section-title"><a href="ex/ex-library.html#exceptions">Exceptions</a></li>
      <li><a href="ex/MyError-class.html">MyError</a></li>
      <li><a href="ex/MyErrorImplements-class.html">MyErrorImplements</a></li>
      <li><a href="ex/MyException-class.html">MyException</a></li>
      <li><a href="ex/MyExceptionImplements-class.html">MyExceptionImplements</a></li>
    </ol>
  </div>

  <div class="col-xs-12 col-sm-9 col-md-8 main-content">

    <section class="desc markdown">
      <p>The annotation <code>@Deprecated('expires when')</code> marks a feature as deprecated.</p>
<p>The annotation <code>@deprecated</code> is a shorthand for deprecating until
an unspecified "next release".</p>
<p>The intent of the <code>@Deprecated</code> annotation is to inform users of a feature
that they should change their code, even if it is currently still working
correctly.</p>
<p>A deprecated feature is scheduled to be removed at a later time, possibly
specified as the "expires" field of the annotation.
This means that a deprecated feature should not be used, or code using it
will break at some point in the future. If there is code using the feature,
that code should be rewritten to not use the deprecated feature.</p>
<p>A deprecated feature should document how the same effect can be achieved,
so the programmer knows how to rewrite the code.</p>
<p>The <code>@Deprecated</code> annotation applies to libraries, top-level declarations
(variables, getters, setters, functions, classes and typedefs),
class-level declarations (variables, getters, setters, methods, operators or
constructors, whether static or not), named optional arguments and
trailing optional positional parameters.</p>
<p>Deprecation is transitive:</p><ul><li>If a library is deprecated, so is every member of it.</li><li>If a class is deprecated, so is every member of it.</li><li>If a variable is deprecated, so are its implicit getter and setter.</li></ul>
<p>A tool that processes Dart source code may report when:</p><ul><li>the code imports a deprecated library.</li><li>
<p>the code exports a deprecated library, or any deprecated member of
 &nbsp;a non-deprecated library.</p></li><li>the code refers statically to a deprecated declaration.</li><li>
<p>the code dynamically uses a member of an object with a statically known
  type, where the member is deprecated on the static type of the object.</p></li><li>
<p>the code dynamically calls a method with an argument where the
  corresponding optional parameter is deprecated on the object's static type.</p></li></ul>
<p>If the deprecated use is inside a library, class or method which is itself
deprecated, the tool should not bother the user about it.
A deprecated feature is expected to use other deprecated features.</p>
    </section>
    




    <section class="summary offset-anchor" id="constructors">
      <h2>Constructors</h2>

      <dl class="constructor-summary-list">
        <dt id="Deprecated" class="callable">
          <span class="name"><a href="ex/Deprecated/Deprecated.html">Deprecated</a></span><span class="signature">(<span class="parameter" id="-param-expires"><span class="type-annotation">String</span> <span class="parameter-name">expires</span></span>)</span>
        </dt>
        <dd>
          <p>Create a deprecation annotation which specifies the expiration of the
annotated feature.<a href="ex/Deprecated/Deprecated.html">&hellip;</a>
</p>
          <div class="constructor-modifier features">const</div>
        </dd>
      </dl>
    </section>

    <section class="summary offset-anchor" id="instance-properties">
      <h2>Properties</h2>

      <dl class="properties">
        <dt id="expires" class="property">
          <span class="name"><a href="ex/Deprecated/expires.html">expires</a></span>
          <span class="signature">&#8594; String</span>
        </dt>
        <dd>
          <p>A description of when the deprecated feature is expected to be retired.</p>
          <div class="features">
    read-only
  </div>
</dd>
        <dt id="hashCode" class="property inherited">
          <span class="name"><a href="ex/Deprecated/hashCode.html">hashCode</a></span>
          <span class="signature">&#8594; int</span>
        </dt>
        <dd class="inherited">
          <p>Get a hash code for this object.<a href="ex/Deprecated/hashCode.html">&hellip;</a>
</p>
          <div class="features">
    read-only, inherited
  </div>
</dd>
        <dt id="runtimeType" class="property inherited">
          <span class="name"><a href="ex/Deprecated/runtimeType.html">runtimeType</a></span>
          <span class="signature">&#8594; Type</span>
        </dt>
        <dd class="inherited">
          <p>A representation of the runtime type of the object.</p>
          <div class="features">
    read-only, inherited
  </div>
</dd>
      </dl>
    </section>

    <section class="summary offset-anchor inherited" id="operators">
      <h2>Operators</h2>
      <dl class="callables">
        <dt id="operator ==" class="callable inherited">
          <span class="name "><a href="ex/Deprecated/operator_equals.html">operator ==</a></span><span class="signature">(<wbr><span class="parameter" id="==-param-other"><span class="parameter-name">other</span></span>)
            <span class="returntype parameter">&#8594; bool</span>
          </span>
        </dt>
        <dd class="inherited">
          <p>The equality operator.<a href="ex/Deprecated/operator_equals.html">&hellip;</a>
</p>
          <div class="features">inherited</div>
        </dd>
      </dl>
    </section>

    <section class="summary offset-anchor" id="instance-methods">
      <h2>Methods</h2>
      <dl class="callables">
        <dt id="noSuchMethod" class="callable inherited">
          <span class="name "><a href="ex/Deprecated/noSuchMethod.html">noSuchMethod</a></span><span class="signature">(<wbr><span class="parameter" id="noSuchMethod-param-invocation"><span class="type-annotation">Invocation</span> <span class="parameter-name">invocation</span></span>)
            <span class="returntype parameter">&#8594; dynamic</span>
          </span>
        </dt>
        <dd class="inherited">
          <p><code>noSuchMethod</code> is invoked when users invoke a non-existent method
on an object. The name of the method and the arguments of the
invocation are passed to <code>noSuchMethod</code> in an <code>Invocation</code>.
If <code>noSuchMethod</code> returns a value, that value becomes the result of
the original invocation.<a href="ex/Deprecated/noSuchMethod.html">&hellip;</a>
</p>
          <div class="features">inherited</div>
        </dd>
        <dt id="toString" class="callable">
          <span class="name "><a href="ex/Deprecated/toString.html">toString</a></span><span class="signature">(<wbr>)
            <span class="returntype parameter">&#8594; String</span>
          </span>
        </dt>
        <dd>
          <p>Returns a string representation of this object.</p>
        </dd>
      </dl>
    </section>

  </div> <!-- /.main-content -->

  <div class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
    <h5>Deprecated</h5>
    <ol>
    
    
    
      <li class="section-title"><a href="ex/Deprecated-class.html#constructors">Constructors</a></li>
      <li><a href="ex/Deprecated/Deprecated.html">Deprecated</a></li>
    
      <li class="section-title">
        <a href="ex/Deprecated-class.html#instance-properties">Properties</a>
      </li>
      <li><a href="ex/Deprecated/expires.html">expires</a></li>
      <li class="inherited"><a href="ex/Deprecated/hashCode.html">hashCode</a></li>
      <li class="inherited"><a href="ex/Deprecated/runtimeType.html">runtimeType</a></li>
    
      <li class="section-title inherited"><a href="ex/Deprecated-class.html#operators">Operators</a></li>
      <li class="inherited"><a href="ex/Deprecated/operator_equals.html">operator ==</a></li>
    
      <li class="section-title"><a href="ex/Deprecated-class.html#instance-methods">Methods</a></li>
      <li class="inherited"><a href="ex/Deprecated/noSuchMethod.html">noSuchMethod</a></li>
      <li><a href="ex/Deprecated/toString.html">toString</a></li>
    </ol>
  </div><!--/.sidebar-offcanvas-->

</div> <!-- row -->
</div> <!-- container -->

<footer>
  <div class="container-fluid">
    <div class="container">
      <p class="text-center">
        <span class="no-break">
          test_package 0.0.1
        </span>
        &bull;
        <span class="no-break">
          <a href="https://www.dartlang.org">
            <img src="static-assets/favicon.png" alt="Dart" title="Dart" width="16" height="16">
          </a>
        </span>
        &bull;
        <span class="copyright no-break">
          <a href="http://creativecommons.org/licenses/by-sa/4.0/">cc license</a>
        </span>
      </p>
    </div>
  </div>
</footer>

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="static-assets/typeahead.bundle.min.js"></script>
<script src="static-assets/prettify.js"></script>
<script src="static-assets/script.js"></script>
<!-- Do not remove placeholder -->
<!-- Footer Placeholder -->

</body>

</html>
