Skip to content

Bases de 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.

Un programme Dart nécessite une fonction main, son point d’entrée unique.

void main() {
print('Hello, Dart!');
}

Déclaration d’une valeur variable :

var firstname = "Pierre";
firstname = "Jean-Pierre"; // OK
var total = 0.0;
total += 3.0;
total -= 2.5;

Dart propose plusieurs types intégrés :

  • String
  • num, int, double
  • bool
  • List
  • Map
  • Set
  • Record
  • Runes, Symbol
  • Null

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 null
String title = "Hello"; // Ne peut pas être null

Les valeurs dynamic sont “nullables” par défaut.

var title = "Introduction à Dart";
print('${title.split(' ')}');

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'
};

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 compilation
total += 10; // ⚠️ Erreur compilation

Les variables const sont initialisées pendant la compilation et sont entièrement immuables.

const defaultErrorMessage = 'Ooops...:|';
const ok = 200;
const notFound = 404;

Conditions :

if (age <= 2) {
return 0;
} else if (age > 2 && age < 13) {
return 0.5;
} else {
return 1;
}
// For-in loop
for (final user in group) {
print(user);
}
// For loop
for (int month = 1; month <= 12; month++) {
print(month);
}
// While loop
while (year < 2016) {
year += 1;
}

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(),
};