Sortie de Dart 2.7

Par:
fredericmazue

ven, 13/12/2019 - 16:17

Parallèlement à l'annonce de la sortie de Flutter 1.2, Google a annoncé la sortie de la version 2.7 de son langage maison Dart. Dart 2.7 est bien évidemment à la base de Flutter 1.2.

Les deux grosses nouveautés de Dart 2.7 sont la prise en charge des méthodes d'extension, ainsi qu'un nouveau package pour la gestion des chaînes avec des caractères spéciaux.

Les méthodes d'extension permettent d'ajouter de nouvelles fonctionnalités à n'importe quel type, même les types que vous ne contrôlez pas.

Par exemple il est possible d'étendre la classe String pour lui ajouter l'analyse des entiers et des valeurs en virgule flottante, comme ceci :

extension ParseNumbers on String {
  int parseInt() {
    return int.parse(this);
  }  double parseDouble() {
    return double.parse(this);
  }
}

main() {
  int i = '42'.parseInt();
  print(i);
}

Important : les méthodes d'extension sont résolues et distribuées statiquement ce qui signifie que vous ne pouvez pas les appeler sur des valeurs dont le type est dynamique. Ici, l'appel lève une exception lors de l'exécution:

dynamic d = '2'
d.parseInt();
===> Runtime exception: NoSuchMethodError

Les méthodes d'extension fonctionne avec le mécanisme d'inférence de types de Dart. Ci-dessous l'inférence de type détermine que la variable v est du type String, et le code fonctionne :

var v = '1';
v.parseInt(); // OK!