Introduction à Dart
-
Upload
soat -
Category
Technology
-
view
202 -
download
0
description
Transcript of Introduction à Dart
Introduction à
2023-04-12 Introduction à DART 1
DART
Yohan BESCHI – Développeur Java
@yohanbeschi
+Yohan Beschi
Pourquoi ce talk ?
2023-04-12 Introduction à DART 2
CellTable<User> table = new CellTable<User>();
TextColumn<User> idColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.id; }};
TextColumn<User> firstNameColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.firstName; }};
TextColumn<User> lastNameColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.lastName; }};
TextColumn<User> ageColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.age; }};
idColumn.setSortable(true);firstNameColumn.setSortable(true);lastNameColumn.setSortable(true);ageColumn.setSortable(true);
table.addColumn(idColumn, "ID");table.addColumn(firstNameColumn, "First name");table.addColumn(lastNameColumn, "Lats name");table.addColumn(ageColumn, "Age");
ListDataProvider<User> dataProvider = new ListDataProvider<User>();dataProvider.addDataDisplay(table);
List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);}
ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);columnSortHandler.setComparator(idColumn,
new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.id.compareTo(o2.id) : 1;}return -1;
}});
columnSortHandler.setComparator(firstNameColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;}return -1;
}});
columnSortHandler.setComparator(lasteNameColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;}return -1;
}});
columnSortHandler.setComparator(ageColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.age.compareTo(o2.age) : 1;}return -1;
}});
table.addColumnSortHandler(columnSortHandler);table.getColumnSortList().push(firstNameColumn);
Pourquoi ce talk ?
2023-04-12 Introduction à DART 3
CellTable<User> table = new CellTable<User>();
TextColumn<User> idColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.id; }};
TextColumn<User> firstNameColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.firstName; }};
TextColumn<User> lastNameColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.lastName; }};
TextColumn<User> ageColumn = new TextColumn<User>() { @Override public String getValue(User user) {
return user.age; }};
idColumn.setSortable(true);firstNameColumn.setSortable(true);lastNameColumn.setSortable(true);ageColumn.setSortable(true);
table.addColumn(idColumn, "ID");table.addColumn(firstNameColumn, "First name");table.addColumn(lastNameColumn, "Lats name");table.addColumn(ageColumn, "Age");
ListDataProvider<User> dataProvider = new ListDataProvider<User>();dataProvider.addDataDisplay(table);
List<User> list = dataProvider.getList();for (User user : USERS) { list.add(user);}
ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);columnSortHandler.setComparator(idColumn,
new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.id.compareTo(o2.id) : 1;}return -1;
}});
columnSortHandler.setComparator(firstNameColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;}return -1;
}});
columnSortHandler.setComparator(lasteNameColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;}return -1;
}});
columnSortHandler.setComparator(ageColumn,new Comparator<Tester.User>() { public int compare(User o1, User o2) {
if (o1 == o2) { return 0;}
if (o1 != null) { return (o2 != null) ? o1.age.compareTo(o2.age) : 1;}return -1;
}});
table.addColumnSortHandler(columnSortHandler);table.getColumnSortList().push(firstNameColumn);
Plus de 100 lignes
Pourquoi ce talk ?
2023-04-12 Introduction à DART 4
Table<User> table = new Table (sorting:true) ..addColumn('ID', new TextCell((User o) => o.id)) ..addColumn('First name', new TextCell((User o) => o.firstName)) ..addColumn('Last name', new TextCell((User o) => o.lastName)) ..addColumn('Age', new TextCell((User o) => o.age)) ..setData(objs);
Pourquoi ce talk ?
2023-04-12 Introduction à DART 5
Table<User> table = new Table (sorting:true) ..addColumn('ID', new TextCell((User o) => o.id)) ..addColumn('First name', new TextCell((User o) => o.firstName)) ..addColumn('Last name', new TextCell((User o) => o.lastName)) ..addColumn('Age', new TextCell((User o) => o.age)) ..setData(objs);
6 lignes
Le gagnant pour moi ?
2023-04-12 Introduction à DART 6
Il était une fois…
2023-04-12 Introduction à DART 7
Productivité du programmeur
2023-04-12 Introduction à DART 8
Application évolutive
2023-04-12 Introduction à DART 9
Rapidité d'exécution
2023-04-12 Introduction à DART 10
Performance au démarrage
2023-04-12 Introduction à DART 11
L'arrivée de DART
⦿Open Source (BSD)⦿Structuré⦿Anti-Révolutionnaire⦿Dans la mouvance des frameworks JS⦿N’a pas pour objectif de casser le web
2023-04-12 Introduction à DART 12
Classes abstraites
2023-04-12 Introduction à DART 13
abstract class Validatable { }
Classes abstraites
2023-04-12 Introduction à DART 14
abstract class Validatable { List<Object> valuesToValidate();}
Classes abstraites
2023-04-12 Introduction à DART 15
abstract class Validator<T extends Validatable> {
}
Classes abstraites
2023-04-12 Introduction à DART 16
abstract class Validator<T extends Validatable> { bool validate(T object) {
}}
Classes abstraites
2023-04-12 Introduction à DART 17
abstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) {
} }}
Classes abstraites
2023-04-12 Introduction à DART 18
abstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { if (StringUtils.isEmpty(obj.toString())) { } } }}
Classes abstraites
2023-04-12 Introduction à DART 19
abstract class Validator<T extends Validatable> { bool validate(T object) { for (Object obj in object.valuesToValidate()) { if (StringUtils.isEmpty(obj.toString())) { return false; } } return true; }}
Classes concrètes
2023-04-12 Introduction à DART 20
class User {
}
Classes concrètes
2023-04-12 Introduction à DART 21
class User implements Validatable {
}
Classes concrètes
2023-04-12 Introduction à DART 22
class User implements Validatable { String username; String password; }
Classes concrètes
2023-04-12 Introduction à DART 23
class User implements Validatable { String username; String password; User(this.username, this.password); }
Classes concrètes
2023-04-12 Introduction à DART 24
class User implements Validatable { String username; String password; User(this.username, this.password); List<Object> valuesToValidate() { return [username, password]; }}
Mais ce n’est pas tout
2023-04-12 Introduction à DART 25
⦿Mixins⦿Optionnellement typé⦿Gouverné par des fonctions de haut niveau⦿Mono processus
Librairies disponibles
⦿Core⦿HTML⦿Async⦿ IO⦿Crypto⦿ JSON⦿Mirrors⦿UTF
⦿TU et Mocks⦿Math⦿Logging⦿URI⦿ I18N⦿etc.
2023-04-12 Introduction à DART 26
Futures / Callback Hell - JS
2023-04-12 Introduction à DART 27
getWinningNumber( (int result1) { updateResult(1, result1); getWinningNumber( (int result2) { updateResult(2, result2); getWinningNumber( (int result3) { updateResult(3, result3); getWinningNumber( (int result4) { updateResult(4, result4); getWinningNumber( (int result5) { updateResult(5, result5); getWinningNumber( (int result6) { updateResult(6, result6); //snip getResultsString()
}); }); });
}); });});
Futures / Callback Hell - Dart
2023-04-12 Introduction à DART 28
void main() { getFutureWinningNumber() .then(next(1)) .then(next(2)) .then(next(3)) .then(next(4)) .then(next(5)) .then(next(6));}
Function next(int position) { return (int result) { updateResult(position, result); return getFutureWinningNumber(); };}
Isolates
2023-04-12 Introduction à DART 29
Machines Virtuelles
2023-04-12 Introduction à DART 30
Dartium
2023-04-12 Introduction à DART 31
DartEditor
2023-04-12 Introduction à DART 32
Plugins
2023-04-12 Introduction à DART 33
dart2js
2023-04-12 Introduction à DART 34
dart2js
2023-04-12 Introduction à DART 35
dart2js
⦿Cible HTML5⦿Tree Shaking⦿Agrégation/Minification⦿Optimisation
2023-04-12 Introduction à DART 36
pub
2023-04-12 Introduction à DART 37
pub
2023-04-12 Introduction à DART 38
name: pacifista_rocksdescription: The best application in the whole worldversion: 0.0.1dependencies: great_lib: any
pubspec.yaml
dartdoc
2023-04-12 Introduction à DART 39
/// This is a single-line documentation comment.
/** * This is a multi-line documentation comment. * To generate the documentation: * $ dartdoc <filename> */void main() { }
dartdoc
2023-04-12 Introduction à DART 40
Utilisation
⦿Création de sites Single-Page⦿Création d'application complètes⦿ Jeux HTML
2023-04-12 Introduction à DART 41
Roadmap
2023-04-12 Introduction à DART 42
Aujourd'hui : M2 Mi-fevrier : M3 Été : V1 !
Aller plus loinDartLangFR⦿ Mailing-list : dartlangfr (https://groups.google.com/forum/?fromgroups=&hl=en#!forum/dartlangfr)
⦿ Google+ : DartlangFR (https://plus.google.com/u/0/communities/104813951711720144450)
⦿ Twitter : @dartlang_fr⦿ Blog : dartlangfr.net
DartLang⦿ Site officiel : www.dartlang.org⦿ Mailing-list : dartlang (https://groups.google.com/a/dartlang.org/forum/?fromgroups&hl=en#!
forum/misc)
⦿ Google+ : Dart (https://plus.google.com/+dartlang)
⦿ Google+ : Dartisans (https://plus.google.com/communities/114566943291919232850)
⦿ Twitter : @dart_lang⦿ Blog : blog.dartwatch.com⦿ Newsletter : Dart weekly
2023-04-12 Introduction à DART 43
Merci
Des questions ?
2023-04-12 Introduction à DART 44