<!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.19.1-dev">
  <meta name="description" content="test_package API docs, for the Dart programming language.">
  <title>test_package - Dart API docs</title>

  <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">
  <ol class="breadcrumbs gt-separated dark hidden-xs">
    <li><a href="http://github.com/dart-lang">test_package package</a></li>
  </ol>
  <div class="self-name">test_package</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><span class="package-name">test_package</span> <span class="package-kind">package</span></h5>
    <ol>
          <li class="section-title">Libraries</li>
          <li><a href="anonymous_library/anonymous_library-library.html">anonymous_library</a></li>
          <li><a href="another_anonymous_lib/another_anonymous_lib-library.html">another_anonymous_lib</a></li>
          <li><a href="code_in_comments/code_in_comments-library.html">code_in_comments</a></li>
          <li><a class="deprecated" href="is_deprecated/is_deprecated-library.html">is_deprecated</a></li>
          <li class="section-subtitle">Real Libraries</li>
            <li class="section-subitem"><a href="ex/ex-library.html">ex</a></li>
            <li class="section-subitem"><a href="fake/fake-library.html">fake</a></li>
          <li class="section-subtitle">Unreal</li>
            <li class="section-subitem"><a href="reexport_one/reexport_one-library.html">reexport_one</a></li>
            <li class="section-subitem"><a href="reexport_two/reexport_two-library.html">reexport_two</a></li>
          <li class="section-subtitle">Misc</li>
            <li class="section-subitem"><a href="two_exports/two_exports-library.html">two_exports</a></li>
          <li class="section-subtitle">Other</li>
            <li class="section-subitem"><a href="css/css-library.html">css</a></li>
          <li class="section-title">test_package_imported</li>
          <li><a href="test_package_imported.main/test_package_imported.main-library.html">test_package_imported.main</a></li>
    </ol>
  </div>

  <div class="col-xs-12 col-sm-9 col-md-8 main-content">
      <section class="desc markdown">
        <h1>Best Package</h1>
<p>This is an amazing package.</p>
<p>For example, it:</p><ul><li>Is very fast</li><li>Has zero bugs</li><li>Is free</li></ul>
<p>It also has some awesome code</p>
<pre class="language-dart"><code class="language-dart">void main() {
  // in Dart!
}

/*
80-characters: to ensure default styles accommodate Dart line length convention.
01234567890123456789012345678901234567890123456789012345678901234567890123456789
*/
</code></pre>
<pre class="language-yaml"><code class="language-yaml">and_yaml:
  - value
  - "value"
  - 3.14
</code></pre>
<pre class="language-css"><code class="language-css">/* issue 1484 regression */
#id {
  background: green;
}

.class {
  background: red;
}

div {
  background: green;
}
</code></pre>
<pre class="language-html"><code class="language-html">&lt;div&gt;
  &lt;strong&gt;Hello!&lt;/strong&gt;
  &lt;h1&gt;World!&lt;/h1&gt;
&lt;/div&gt;
</code></pre>
<pre class="language-js"><code class="language-js">var f = function(a, b) {
  return a + b;  
};
</code></pre>
<p>It sometimes generates warnings in commentRefs like this: <code>unknownThingy.FromSomewhere</code></p>
<p>Be sure to check out other awesome packages on <a href="https://pub.dartlang.org">pub</a>.</p>
      </section>
      
        <section class="summary">
            <h2>Libraries</h2>
          <dl>
            <dt id="anonymous_library">
              <span class="name"><a href="anonymous_library/anonymous_library-library.html">anonymous_library</a></span>
            </dt>
            <dd>
              
            </dd>            <dt id="another_anonymous_lib">
              <span class="name"><a href="another_anonymous_lib/another_anonymous_lib-library.html">another_anonymous_lib</a></span>
            </dt>
            <dd>
              
            </dd>            <dt id="code_in_comments">
              <span class="name"><a href="code_in_comments/code_in_comments-library.html">code_in_comments</a></span>
            </dt>
            <dd>
              <code class="language-dart">void main() {
  // in Dart!
}
</code> <a href="code_in_comments/code_in_comments-library.html">[...]</a>
            </dd>            <dt id="is_deprecated">
              <span class="name"><a class="deprecated" href="is_deprecated/is_deprecated-library.html">is_deprecated</a></span>
            </dt>
            <dd>
              This lib is deprecated. It never had a chance
            </dd>            <h3>Real Libraries</h3>
              <dt id="ex">
                <span class="name"><a href="ex/ex-library.html">ex</a></span>
              </dt>
              <dd>
                a library. testing string escaping: <code>var s = 'a string'</code> <cool></cool>
              </dd>              <dt id="fake">
                <span class="name"><a href="fake/fake-library.html">fake</a></span>
              </dt>
              <dd>
                WOW FAKE PACKAGE IS <strong>BEST</strong> <a href="http://example.org">PACKAGE</a> <a href="fake/fake-library.html">[...]</a>
              </dd>            <h3>Unreal</h3>
              <dt id="reexport_one">
                <span class="name"><a href="reexport_one/reexport_one-library.html">reexport_one</a></span>
              </dt>
              <dd>
                
              </dd>              <dt id="reexport_two">
                <span class="name"><a href="reexport_two/reexport_two-library.html">reexport_two</a></span>
              </dt>
              <dd>
                
              </dd>            <h3>Misc</h3>
              <dt id="two_exports">
                <span class="name"><a href="two_exports/two_exports-library.html">two_exports</a></span>
              </dt>
              <dd>
                
              </dd>            <h3>Other</h3>
              <dt id="css">
                <span class="name"><a href="css/css-library.html">css</a></span>
              </dt>
              <dd>
                Testing that a library name doesn't conflict
with directories created by dartdoc.
              </dd>          </dl>
        </section>
        <section class="summary">
            <h2>test_package_imported</h2>
          <dl>
            <dt id="test_package_imported.main">
              <span class="name"><a href="test_package_imported.main/test_package_imported.main-library.html">test_package_imported.main</a></span>
            </dt>
            <dd>
              
            </dd>          </dl>
        </section>

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

</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>
