<!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="description" content="API docs for the withAnimation method from the Dog class, for the Dart programming language.">
  <title>withAnimation method - Dog 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:500,400i,400,300|Source+Sans+Pro:400,300,700" rel="stylesheet">
  <link rel="stylesheet" href="static-assets/github.css">
  <link rel="stylesheet" href="static-assets/styles.css">
  <link rel="icon" href="static-assets/favicon.png">

</head>

<body>

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

<header id="title">
  <button id="sidenav-left-toggle" type="button">&nbsp;</button>
  <ol class="breadcrumbs gt-separated dark hidden-xs">
    <li><a href="index.html">test_package</a></li>
    <li><a href="ex/ex-library.html">ex</a></li>
    <li><a href="ex/Dog-class.html">Dog</a></li>
    <li class="self-crumb">withAnimation method</li>
  </ol>
  <div class="self-name">withAnimation</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>
</header>

<main>

  <div class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
    <h5>Dog class</h5>
    <ol>
      <li class="section-title"><a href="ex/Dog-class.html#constructors">Constructors</a></li>
      <li><a href="ex/Dog/Dog.html">Dog</a></li>
      <li><a class="deprecated" href="ex/Dog/Dog.deprecatedCreate.html">deprecatedCreate</a></li>
    
      <li class="section-title">
        <a href="ex/Dog-class.html#instance-properties">Properties</a>
      </li>
      <li><a href="ex/Dog/aFinalField.html">aFinalField</a></li>
      <li><a href="ex/Dog/aGetterReturningRandomThings.html">aGetterReturningRandomThings</a></li>
      <li><a href="ex/Dog/aProtectedFinalField.html">aProtectedFinalField</a></li>
      <li><a class="deprecated" href="ex/Dog/deprecatedField.html">deprecatedField</a></li>
      <li><a class="deprecated" href="ex/Dog/deprecatedGetter.html">deprecatedGetter</a></li>
      <li><a class="deprecated" href="ex/Dog/deprecatedSetter.html">deprecatedSetter</a></li>
      <li><a href="ex/Dog/isImplemented.html">isImplemented</a></li>
      <li><a href="ex/Dog/name.html">name</a></li>
      <li class="inherited"><a href="ex/E/hashCode.html">hashCode</a></li>
      <li class="inherited"><a href="ex/E/runtimeType.html">runtimeType</a></li>
    
      <li class="section-title"><a href="ex/Dog-class.html#instance-methods">Methods</a></li>
      <li><a href="ex/Dog/abstractMethod.html">abstractMethod</a></li>
      <li><a href="ex/Dog/foo.html">foo</a></li>
      <li><a class="deprecated" href="ex/Dog/getAnotherClassD.html">getAnotherClassD</a></li>
      <li><a class="deprecated" href="ex/Dog/getClassA.html">getClassA</a></li>
      <li><a href="ex/Dog/testGeneric.html">testGeneric</a></li>
      <li><a href="ex/Dog/testGenericMethod.html">testGenericMethod</a></li>
      <li><a href="ex/Dog/testMethod.html">testMethod</a></li>
      <li><a href="ex/Dog/withAnimation.html">withAnimation</a></li>
      <li><a href="ex/Dog/withAnimationInline.html">withAnimationInline</a></li>
      <li><a href="ex/Dog/withAnimationInOneLineDoc.html">withAnimationInOneLineDoc</a></li>
      <li><a href="ex/Dog/withAnimationOutOfOrder.html">withAnimationOutOfOrder</a></li>
      <li><a href="ex/Dog/withDeprecatedAnimation.html">withDeprecatedAnimation</a></li>
      <li><a href="ex/Dog/withMacro.html">withMacro</a></li>
      <li><a href="ex/Dog/withMacro2.html">withMacro2</a></li>
      <li><a href="ex/Dog/withNamedAnimation.html">withNamedAnimation</a></li>
      <li><a href="ex/Dog/withPrivateMacro.html">withPrivateMacro</a></li>
      <li><a href="ex/Dog/withQuotedNamedAnimation.html">withQuotedNamedAnimation</a></li>
      <li><a href="ex/Dog/withUndefinedMacro.html">withUndefinedMacro</a></li>
      <li class="inherited"><a href="ex/E/noSuchMethod.html">noSuchMethod</a></li>
      <li class="inherited"><a href="ex/E/toString.html">toString</a></li>
    
      <li class="section-title"><a href="ex/Dog-class.html#operators">Operators</a></li>
      <li><a href="ex/Dog/operator_equals.html">operator ==</a></li>
    
      <li class="section-title"><a href="ex/Dog-class.html#static-properties">Static properties</a></li>
      <li><a href="ex/Dog/somethingTasty.html">somethingTasty</a></li>
      <li><a href="ex/Dog/staticGetterSetter.html">staticGetterSetter</a></li>
    
      <li class="section-title"><a href="ex/Dog-class.html#static-methods">Static methods</a></li>
      <li><a class="deprecated" href="ex/Dog/createDog.html">createDog</a></li>
    
      <li class="section-title"><a href="ex/Dog-class.html#constants">Constants</a></li>
      <li><a href="ex/Dog/aName-constant.html">aName</a></li>
      <li><a href="ex/Dog/aStaticConstField-constant.html">aStaticConstField</a></li>
    </ol>
  </div><!--/.sidebar-offcanvas-->

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

    <section class="multi-line-signature">
      <span class="returntype">void</span>
      <span class="name ">withAnimation</span>
(<wbr>)
      
    </section>
    <section class="desc markdown">
      <p>Animation method</p><div style="position: relative;">
  <div id="animation_1_play_button_" onclick="if (animation_1.paused) {
                  animation_1.play();
                  this.style.display = 'none';
                } else {
                  animation_1.pause();
                  this.style.display = 'block';
                }" style="position:absolute;
              width:100px;
              height:100px;
              z-index:100000;
              background-position: center;
              background-repeat: no-repeat;
              background-image: url(static-assets/play_button.svg);">
  </div>
  <video id="animation_1" style="width:100px; height:100px;" onclick="if (this.paused) {
                    this.play();
                    animation_1_play_button_.style.display = 'none';
                  } else {
                    this.pause();
                    animation_1_play_button_.style.display = 'block';
                  }" loop="">
    <source src="http://host/path/to/video.mp4" type="video/mp4">
  </video>
</div>
<p>More docs</p>
    </section>
    
    

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

  <div class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
  </div><!--/.sidebar-offcanvas-->

</main>

<footer>
  <span class="no-break">
    test_package 0.0.1
  </span>

</footer>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="static-assets/typeahead.bundle.min.js"></script>
<script src="static-assets/highlight.pack.js"></script>
<script src="static-assets/URI.js"></script>
<script src="static-assets/script.js"></script>


</body>

</html>
