Introduction to the
Dart lang
Jana Moudrá
Co-Founder at Juicymo
Organizer at GDG ČVUT Prague/GDG Prague
Interested in Web, Android, Design, Dart
about.me/janamou
About Me
about.me/janamou
about.me/janamou
1.3.6
Open-source
Language for the Web
For better performance
Goals to replace JavaScript
Ready for standardization
about.me/janamou
Dartium: Chromium with Dart VM
about.me/janamou
Compiled into JavaScript works
in all modern browsers
about.me/janamou
Object Oriented Easy to learn Optional types
Modular
Compiles to
JavaScript
about.me/janamou
Client Server
about.me/janamou
Performance
Dart Performance
www.dartlang.org/performance/
Language
Optional types
Every variable
is object
Top level main()
function
Checked and
Production
modes
Syntactic sugar
Named
constructors
… and more
about.me/janamou
Streams Futures HTML
var x = 10;
var y = 20;
or
num x = 10;
num y = 20;
Optional types
about.me/janamou
void main() {
print("Hello world Dart!");
}
Top level main()
function
about.me/janamou
class Person {
String firstName;
String lastName;
int age;
Person(this.firstName, this.lastName);
}
void main() {
Person person = new Person("Jana", "Moudrá");
}
Syntactic sugar
about.me/janamou
class Person {
String firstName;
String lastName;
int age;
Person(this.firstName, this.lastName);
Person.withAge(this.lastName, this.age);
}
void main() {
Person person = new Person.withAge("Moudrá", 25);
}
Named constructor
about.me/janamou
class Person {
String _firstName;
String _lastName;
int _age;
Person(this.firstName, this.lastName);
Person.withAge(this.lastName, this.age);
int get age => _age;
set age(int age) => _age = age;
}
Getter/Setter
about.me/janamou
void main() {
querySelector("#my-button")
..text = "Open Window"
..onClick.listen(openWindow);
}
Cascade operator
about.me/janamou
someFunc()
.then(printValue)
.catchError(printError);
Futures I.
about.me/janamou
HttpRequest.getString('shapes.json')
.then((String jsonString) {
print(jsonString);
})
.catchError((Error error) {
print(error.toString());
});
Futures II.
about.me/janamou
Tools
about.me/janamou
Dart Editor Dartium Dart SDK
Dart Editor
Dart VM
Libraries
Command Line Tools
Dart SDK
Dart VM
Libraries
Command Line Tools
Dart SDK
dart2js dartanalyzer pubdocgen
Libraries
dart:core
dart:html
dart:math
dart:convert
dart:js
dart:web_gl
… and more on https://api.dartlang.org/apidocs/
about.me/janamou
import 'dart:html';
ButtonElement myButton;
void main() {
myButton = querySelector('#myButton');
myButton.onClick.listen(updateText);
}
void updateText(Event event) {
myButton.text = "Hello world Dart!";
}
dart:html
about.me/janamou
dart:convert
about.me/janamou
import 'dart:convert';
void main() {
String jsonString =
'{"name": "Jana", "surname": "Moudra"}';
Map jsonMap = JSON.decode(jsonString);
print(jsonMap["name"]); //prints Jana
print(jsonMap["surname"]); //prints Moudra
}
dart:js
about.me/janamou
<script type="text/javascript">
var Person = function(name, surname) {
this.name = name;
this.surname = surname;
this.sayHello = function(){
alert("Hello!");
}
};
</script>
dart:js
about.me/janamou
import 'dart:js';
void main() {
var person = new JsObject(context['Person'],
["Jana", "Moudra"]);
print(person["name"]);
print(person["surname"]);
person.callMethod("sayHello");
}
AngularDart
Polymer.dart
StageXL
three.dart
vector_math
… and more on https://pub.dartlang.org/
about.me/janamou
How to start?
How to start?
www.dartlang.org
GET STARTED
www.dartlang.org/codelabs/darrrt/
DOCS > TUTORIALS
www.dartlang.org/docs/tutorials/
DART API REFERENCE
https://api.dartlang.org/apidocs/
DOCS > DART: UP AND RUNNING
www.dartlang.org/docs/dart-up-and-running/
DOCS > API REFERENCE
https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/home
PUB
https://pub.dartlang.org/
SAMPLES
www.dartlang.org/samples/
Thank You!
and happy Dart coding :-)
about.me/janamou
https://www.dartlang.org/
http://news.dartlang.org/
https://pub.dartlang.org/
https://github.com/dart-lang
https://plus.google.com/+dartlang/
https://www.dartlang.org/articles/idiomatic-dart/
Dart Resources

Introduction to the Dart language