<!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 withAnimationInOneLineDoc method from the Dog class, for the Dart programming language.">
  <title>withAnimationInOneLineDoc 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">withAnimationInOneLineDoc method</li>
  </ol>
  <div class="self-name">withAnimationInOneLineDoc</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>withAnimationInOneLineDoc method</h1>

    <section class="multi-line-signature">
      <span class="returntype">void</span>
      <span class="name ">withAnimationInOneLineDoc</span>
(<wbr>)
      
    </section>
    <section class="desc markdown">
      <p>Animation in one line doc </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>This tests to see that we do the right thing if the animation is in
the one line doc above.</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>
