Bases de Dart
Introduction au développement Dart
Section titled “Introduction au développement Dart”Dart est un langage de programmation open-source développé par Google et présenté au public en 2011. Initialement imaginé comme un remplacement de JavaScript pour le développement web, cette ambition a été abandonnée, mais le langage n’a cessé d’évoluer et est maintenant utilisé en interne chez Google sur des projets critiques.
Dart est un langage qui devrait paraître familier aux développeurs connaissant Java, C#, JavaScript, Kotlin ou Swift.
Hello Dart
Section titled “Hello Dart”Un programme Dart nécessite une fonction main, son point d’entrée unique.
void main() { print('Hello, Dart!');}Les bases
Section titled “Les bases”Variable (var)
Section titled “Variable (var)”Déclaration d’une valeur variable :
var firstname = "Pierre";firstname = "Jean-Pierre"; // OK
var total = 0.0;total += 3.0;total -= 2.5;Types intégrés (Built-in types)
Section titled “Types intégrés (Built-in types)”Dart propose plusieurs types intégrés :
Stringnum,int,doubleboolListMapSetRecordRunes,SymbolNull
Sound null safety
Section titled “Sound null safety”Dart (version 2.12 et supérieure) est “null safe”. Par défaut, les variables typées ne peuvent être null.
Pour signaler au compilateur qu’une variable ou qu’un paramètre peut être null, il est nécessaire de l’expliciter grâce au ? :
String? name; // Peut être nullString title = "Hello"; // Ne peut pas être nullLes valeurs dynamic sont “nullables” par défaut.
String handling
Section titled “String handling”var title = "Introduction à Dart";print('${title.split(' ')}');Typage statique explicite
Section titled “Typage statique explicite”Il est possible d’expliciter le type des variables :
String name = 'Voyager II';int maxLength = 9;double price = 9.99;List<String> planets = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];Map<String, dynamic> imageJupiter = { 'tags': ['jupiter'], 'url': '//path/to/jupiter.jpg'};final et const
Section titled “final et const”Les variables final ne peuvent être déclarées qu’une seule fois, mais leur contenu est mutable. Grâce à l’inférence de type, le typage explicite est optionnel.
final total = price1 + price2;total = 30; // ⚠️ Erreur compilationtotal += 10; // ⚠️ Erreur compilationLes variables const sont initialisées pendant la compilation et sont entièrement immuables.
const defaultErrorMessage = 'Ooops...:|';const ok = 200;const notFound = 404;Structures de contrôle
Section titled “Structures de contrôle”Conditions :
if (age <= 2) { return 0;} else if (age > 2 && age < 13) { return 0.5;} else { return 1;}Boucles
Section titled “Boucles”// For-in loopfor (final user in group) { print(user);}
// For loopfor (int month = 1; month <= 12; month++) { print(month);}
// While loopwhile (year < 2016) { year += 1;}Switch
Section titled “Switch”Switch classique :
switch(route) { case '/login': screen = LoginScreen(); break; case '/': screen = HomeScreen(); break; case '/404': default: screen = NotFoundScreen();}Switch expression (Dart 3.0) :
final view = switch(result) { Result.pending => ProgressView(), Result.error => ErrorView(), Result.data => UserList(),};