| Index: src/site/index.html
|
| diff --git a/src/site/index.html b/src/site/index.html
|
| index 7455e467fe8783777f0bef85f0ca95a21a79cb88..1a6aa0f7d64601820047656dbf861d767cff79dc 100644
|
| --- a/src/site/index.html
|
| +++ b/src/site/index.html
|
| @@ -140,51 +140,203 @@ js:
|
| <section id="code">
|
| <h1> Code </h1>
|
|
|
| - <p>
|
| - Experiment with Dart right in your browser:
|
| - <a href="http://try.dartlang.org">try.dartlang.org</a>
|
| + <p>
|
| + You can find code examples in Dart Editor's welcome page,
|
| + in the <a href="/samples/">Samples page</a>,
|
| + and below.
|
| + You can also experiment with Dart right in your browser:
|
| + <a href="http://try.dartlang.org" target="_blank">try.dartlang.org</a>
|
| </p>
|
|
|
| - <p>
|
| - Here's some code from a Dart web app that uses Web UI.
|
| - To learn about web programming with Dart, try our
|
| - <a href="/docs/tutorials/">Dart tutorials</a>.
|
| - </p>
|
| +<div class="tabbable">
|
| + <ul class="nav nav-tabs">
|
| + <li class="active"><a href="#syntax" data-toggle="tab">Syntax</a></li>
|
| + <li><a href="#types" data-toggle="tab">Optional types</a></li>
|
| + <li><a href="#classes" data-toggle="tab">Classes</a></li>
|
| + <li><a href="#futures" data-toggle="tab">Futures</a></li>
|
| + <li><a href="#webui" data-toggle="tab">Web UI</a></li>
|
| + </ul>
|
| +
|
| + <div class="tab-content">
|
| + <div class="tab-pane active" id="syntax">
|
| + <p>
|
| + Dart aims to be unsurprising,
|
| + but it does add a few language features
|
| + to keep your code succinct yet understandable.
|
| + Read all about Dart syntax in the
|
| + <a href="/docs/dart-up-and-running/contents/ch02.html">Dart language tour</a>.
|
| + </p>
|
|
|
| - <div class="row-fluid">
|
| - <div class="span6" id="dart-code">
|
| + <div class="row-fluid">
|
| + <div class="span10 offset1">
|
| {% prettify dart %}
|
| -// Dart code:
|
| -import 'package:web_ui/web_ui.dart';
|
| +import 'dart:math'; // Import a library.
|
| +
|
| +// Functions and variables can be inside or outside of classes.
|
| +var shapes = new List(); // A global variable.
|
| +addShape(shape) [[highlight]]=>[[/highlight]] shapes.add(shape); // Function shorthand syntax.
|
| +
|
| +// Every app has a main() function, where execution starts.
|
| +[[highlight]]main()[[/highlight]] {
|
| + // The cascade operator (..) saves you from repetitive typing.
|
| + addShape(new Ellipse(10, 20)[[highlight]]..[[/highlight]]rotation = 45*PI/180
|
| + [[highlight]]..[[/highlight]]color = 'rgb(0,129,198)'
|
| + [[highlight]]..[[/highlight]]outlineWidth = 0);
|
| +
|
| + // You can easily insert expression values into strings.
|
| + print('Area of the first shape: [[highlight]]${shapes[0].area}[[/highlight]]');
|
| +}
|
| +{% endprettify %}
|
| + </div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="tab-pane" id="types">
|
| + <p>
|
| + Declaring types is optional in Dart.
|
| + These types don't affect the runtime behavior,
|
| + but you can use them to clarify APIs
|
| + and get better help from tools—for example,
|
| + better code completion, easier navigation, and earlier error detection.
|
| + For details, see
|
| + <a href="/articles/optional-types/">Optional Types in Dart</a>.
|
| + </p>
|
| +
|
| + <div class="row-fluid">
|
| + <div class="span6" id="without-types">
|
| +{% prettify dart %}
|
| +// Without types.
|
| +recalculate(origin, offset, estimate) {
|
| + // ...
|
| +}
|
| +{% endprettify %}
|
| + </div>
|
| + <div class="span6" id="with-types">
|
| +{% prettify dart %}
|
| +// With types (and an optional parameter).
|
| +[[highlight]]num[[/highlight]] recalculate([[highlight]]Point[[/highlight]] origin,
|
| + [[highlight]]num[[/highlight]] offset,
|
| + {[[highlight]]bool[[/highlight]] estimate:false}) {
|
| + // ...
|
| +}
|
| +{% endprettify %}
|
| + </div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="tab-pane" id="classes">
|
| + <p>
|
| + Dart is object oriented, with full support for classes.
|
| + Each class has a single <em>superclass</em>,
|
| + but classes can implement any number of <em>interfaces</em>.
|
| + For details, see
|
| + <a href="/docs/dart-up-and-running/contents/ch02.html#classes">Classes</a> in the language tour.
|
| + </p>
|
| +
|
| + <div class="row-fluid">
|
| + <div class="span10 offset1">
|
| +{% prettify dart%}
|
| +import 'dart:math';
|
|
|
| -@observable String myString = '';
|
| +[[highlight]]class[[/highlight]] Ellipse extends Shape { // Declare a class.
|
| + num majorAxis = 0; // An instance variable (property).
|
| + num minorAxis = 0;
|
| + static const num C = PI/4; // A constant.
|
| + num get area => C*majorAxis*minorAxis; // A property implemented with a getter.
|
|
|
| -String get shouted => myString.toUpperCase();
|
| + Ellipse([[highlight]]this.majorAxis[[/highlight]], [[highlight]]this.minorAxis[[/highlight]]); // Compact constructor syntax.
|
| + Ellipse.circle(num diameter) { // A named constructor.
|
| + minorAxis = majorAxis = diameter;
|
| + }
|
| +}
|
|
|
| -String get palindrome =>
|
| - myString + myString.split('').reversed.join();
|
| +[[highlight]]abstract[[/highlight]] class Shape { // Declare a class that can't be instantiated.
|
| + num get area;
|
| + num rotation = 0;
|
| + num outlineWidth = 1;
|
| + String color = 'black';
|
| +}
|
| {% endprettify %}
|
| + </div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="tab-pane" id="futures">
|
| + <p>
|
| + Functions that do potentially expensive work return Futures.
|
| + To specify what happens when the function's work is done,
|
| + invoke <code>then()</code> on the Future.
|
| + To handle errors, invoke <code>catchError()</code>.
|
| + Learn more by reading
|
| + <a href="/articles/using-future-based-apis/">Using Future Based APIs</a>.
|
| + </p>
|
| +
|
| + <div class="row-fluid">
|
| + <div class="span10 offset1">
|
| +
|
| +{% prettify dart %}
|
| +import 'dart:io';
|
| +import 'dart:async';
|
| +
|
| +void printDailyNewsDigest() {
|
| + File file = new File("dailyNewsDigest.txt");
|
| + [[highlight]]file.readAsString()[[/highlight]] // readAsString() returns a Future.
|
| + [[highlight]].then[[/highlight]]((content) => print(content)) // Handle successful completion.
|
| + [[highlight]].catchError[[/highlight]]((error) => // Handle failure.
|
| + print("Sorry, no news today. Here's why:\n$error"));
|
| +}
|
| +{% endprettify %}
|
| + </div>
|
| + </div>
|
| </div>
|
| - <div class="span6" id="html-code">
|
| + <div class="tab-pane" id="webui">
|
| + <p>
|
| + Here's an example of implementing a web app using the Web UI package.
|
| + To learn about web programming with Dart, try our
|
| + <a href="/docs/tutorials/">Dart tutorials</a>.
|
| + </p>
|
| +
|
| + <div class="row-fluid">
|
| + <div class="span6" id="dart-code">
|
| +{% prettify dart %}
|
| +// Dart code:
|
| +import 'package:web_ui/web_ui.dart';
|
| +
|
| +@observable
|
| +var [[highlight]]shout[[/highlight]] = new Shout();
|
| +
|
| +@observable
|
| +class Shout {
|
| + String [[highlight]]myString[[/highlight]] = '';
|
| + String get [[highlight]]shouted[[/highlight]] => myString.toUpperCase();
|
| + String get [[highlight]]palindrome[[/highlight]] =>
|
| + myString + myString.split('').reversed.join();
|
| +}
|
| +{% endprettify %}
|
| + </div>
|
| + <div class="span6" id="html-code">
|
| {% prettify html %}
|
| <!-- HTML code: -->
|
| -<input type="text" bind-value="myString"
|
| - placeholder="Type here">
|
| -
|
| -<div> Shouted: {{'{{'}}shouted}} </div>
|
| -<div> Palindromic: {{'{{'}}palindrome}} </div>
|
| +<template id="stringManipulation"
|
| + instantiate="if [[highlight]]shout[[/highlight]] != null">
|
| + <input type="text"
|
| + bind-value="shout.[[highlight]]myString[[/highlight]]"
|
| + placeholder="Type here">
|
|
|
| -<script type="application/dart" src="little.dart"></script>
|
| -<script src="packages/browser/dart.js"></script>
|
| + <div> Shouted: {{'{{'}}shout.[[highlight]]shouted[[/highlight]]}} </div>
|
| + <div> Palindromic: {{'{{'}}shout.[[highlight]]palindrome[[/highlight]]}} </div>
|
| +</template>
|
| {% endprettify %}
|
| {% comment %}
|
| Beginning double curlies are processed by liquid,
|
| so you have to surround them in single quotes,
|
| surrounded by double curlies. Yup.
|
| {% endcomment %}
|
| - </div>
|
| - </div> <!-- code -->
|
| -
|
| + </div>
|
| + </div> <!-- code -->
|
| + </div>
|
| + </div>
|
| +</div>
|
| </section>
|
|
|
|
|
|
|