Le programme ce soir 1ère partie Introduction à Flutter + notions nécessaires au cours 3ème partie A votre tour ! Démarrage du codelab 2ème partie Installation de l'environnement
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Qu'est-ce que Flutter ? OpenSource Toutes les couches Multiplateforme Android (4.1+) & iOS (8.0+) Inspiré du web Hot Reload, concepts… Code natif = performances Dart Langage de programmation Tooling Plugins, Inspector…
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Le paradigme : natif Widgets OEM Position GPS Bluetooth Audio Capteurs Caméra Etc Plateforme Services Code natif Application Canvas Evénements
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Le paradigme : WebView (Ionic, Cordova…) Javascript WebView Application Plateforme Position GPS Bluetooth Audio Capteurs Caméra Etc Services Bridge Canvas Evénements
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Le paradigme : Reactives Javascript Widgets OEM Application Plateforme Position GPS Bluetooth Audio Capteurs Caméra Etc Services Bridge Canvas Evénements
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Le paradigme : Flutter Code natif Canvas Evénements Application Plateforme Position GPS Bluetooth Audio Capteurs Caméra Etc Services Widgets, Rendu Platform Channels
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 "Tout est un widget" 100% Flutter Dessine tout à l'écran Tout est widget Layout, thème, vue… Catalogue Material, iOS… Immutable Mais on peut y connecter un état
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les types DART int, double, String, bool… List list = ["a", "b"]; // équivalent à List = List()..add("a")..add("b"); Map = {'Clé': 'Valeur'} dynamic, var, Object
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les classes DART class Car {} // On récupère les attributs et l'implémentation des méthodes class Clio extends Car {} // On ne récupère que la définition de la classe Car class Clio implements Car {}
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les constructeurs DART class Car { final String model; Car(String carModel) : model = carModel; Car(this.model); Car.namedConstructor(String carModel) : model = carModel; }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les constructeurs DART class Car { final String model; Car(String carModel) : model = carModel; Car(this.model); Car.namedConstructor(String carModel) : model = carModel; }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les constructeurs DART class Car { final String model; Car(String carModel) : model = carModel; Car(this.model); Car.namedConstructor(String carModel) : model = carModel; }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} // Optional positional parameters void myMethod2 ([int arg1, int arg2]) {…} // Optional named parameters void myMethod3 ({int arg1, int arg2}) {…}
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} // Optional positional parameters void myMethod2 ([int arg1, int arg2]) {…} // Optional named parameters void myMethod3 ({int arg1, int arg2}) {…}
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} => myMethod1(0, 1) void myMethod2 ([int arg1, int arg2]) {…} => myMethod2() ou myMethod2(0) ou myMethod2(0, 1) void myMethod3 ({int arg1, int arg2}) {…} => myMethod3() ou myMethod3(arg1: 0) ou myMethod3(arg1: 0, arg2: 1)
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} => myMethod1(0, 1) void myMethod2 ([int arg1, int arg2]) {…} => myMethod2() ou myMethod2(0) ou myMethod2(0, 1) void myMethod3 ({int arg1, int arg2}) {…} => myMethod3() ou myMethod3(arg1: 0) ou myMethod3(arg1: 0, arg2: 1)
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} => myMethod1(0, 1) void myMethod2 ([int arg1, int arg2]) {…} => myMethod2() ou myMethod2(0) ou myMethod2(0, 1) void myMethod3 ({int arg1, int arg2}) {…} => myMethod3() ou myMethod3(arg1: 0) ou myMethod3(arg1: 0, arg2: 1)
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART void myMethod1 (int arg1, int arg2) {…} => myMethod1(0, 1) void myMethod2 ([int arg1, int arg2]) {…} => myMethod2() ou myMethod2(0) ou myMethod2(0, 1) void myMethod3 ({int arg1, int arg2}) {…} => myMethod3() ou myMethod3(arg1: 0) ou myMethod3(arg1: 0, arg2: 1)
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : les arguments DART // Valeur par défaut void myMethod3 ({int arg1, int arg2 = 10}) {…} // Forcer les valeurs pour les named arguments void myMethod3 ({int arg1, @required int arg2}) {…}
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Dart : la visibilité (public / privé) DART class Car { final String _model; String get model => _model; void _internalMethod() {…} void publicMethod() {…} }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Liste des widgets Material AppBar, RaisedButton, SnackBar, Chip, Card… Cupertino CupertinoNavigationBar, CupertinoButton, Cupertino…. Widgets génériques Text, Image, Padding, Theme… Texte
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Liste des layouts / containers Fils unique Text, Image, Padding, Theme… Padding Texte Fils multiples Column (les uns en dessous des autres) Row (les uns à côté des autres) Stack (les uns aux dessus des autres) Column Texte
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Quelle différence entre StatelessWidget et StatefulWidget ? stless stfull StatelessWidget Son état n'évolue pas au fil du temps Bienvenue ! StatefulWidget Widget attaché à un état (State) qui peut évoluer au fil du temps Vous avez 1 item Ajouter un item au panier
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Comment créer un StatefulWidget ? DART class MyWidget extends StatefulWidget { @override State createState() { return MyWidgetState(); } }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Comment forcer la mise à jour d'un StatelessWidget ? DART onPressed: () { setState() { items++; } }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Comment forcer la mise à jour d'un StatelessWidget ? DART onPressed: () { setState() { items++; } }
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Le lifecycle simplifié des StatefulWidgets initState Created Widget State create State Initialized mounted didChange Dependencies Ready build Defunct dispose setState
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Comment gérer la navigation ? Bouton retour sur Android, swipe sur iOS Gestion auto de la plateforme Ce composant gère les écrans et la backstack Le Navigator
Flutter Paris - Septembre 2018 Flutter Study Jam - Episode 1 Comment ouvrir puis fermer un écran ? Ouvrir un nouvel écran Navigator.of(context).push( MaterialPageRoute(builder: (context) => Screen2())); Fermer l'écran courant Navigator.of(context).pop();
C'est à vous ! Slack : bit.ly/slack-flutter-france Cours : bit.ly/study-jam-udacity Site officiel Flutter : flutter.io Slides : bit.ly/slides-study-jam