fbpx

3. Les variables en Dart

1. Les différentes variables en Dart

Comme pour tous les langages informatiques, l’une des premières choses à aborder est la notion de variable.

Les variables sont à la fois simples à prendre en main et nous donnent une première utilité rapide à notre code.

Il existe pour tous les langages informatiques toujours les mêmes types de variables, dont voici les principaux:

  1. Chaîne de caractère (pour stocker du texte ou d’autres caractères)
  2. Nombre (entier ou décimaux)
  3. Booléen (true ou false)
  4. Liste (équivalent des tableaux en Dart)
  5. Map (équivalent des objets en Dart)

Nous allons dans le cadre du développement de nos applications avec Flutter, utiliser chacune de ces variables.

Voilà par exemple différentes variables Dart déclarées avec le mot « var » pour indiquer qu’il s’agit de variables:

var pseudo = 'Driss AS'; // chaîne de caractère
var age = 25; // nombre entier
var note = 3.7; // nombre décimal
var isAdmin = true; // booléeen
var startups = ['Apple', 'Google', 'Facebook', 'Amazon']; // liste
var userInfo = { // map
  'pseudo': 'driss',
  'imageUrl': 'images/driss.jpg'
};

Nous utiliserons toutes ces variables dans nos applications Flutter, avec une utilité différente pour chacune:

  1. Chaîne de caractère: pour stocker et afficher du texte ou du contenu (pseudo, url, paragraphe, données)
  2. Nombre: pour stocker et manipuler des données numériques (avec la possibilité de leur appliquer des fonctions mathématiques)
  3. Booléen: pour stocker une valeur binaire qui ne peut prendre que deux valeurs (vraie ou faux) et permet de distinguer deux cas par exemple si un utilisateur a accès à du contenu
  4. Liste: permet de stocker des suites de données, comme une liste de nom ou d’entité
  5. Map: permet de stocker différents champs associés à une même chose (les données d’un utilisateur par exemple)

2. Les chaînes de caractères

On commence à traiter en premier lieu le type de variable le plus utilisé: la chaîne de caractères.

Il est effectivement très utile dans de nombreux programmes et nous permet de faire beaucoup de choses.

Pour déclarer une chaîne de caractères on peut utiliser le mot var pour créer une nouvelle variable et utiliser deux guillemets "" ou apostrophes '':

var chaine1 = 'Une chaîne de caractères avec deux apostrophes';
var chaine2 = "Une chaîne de caractères avec deux guillemets";

On peut également déclarer une chaîne de caractères avec le mot String placé devant notre variable:

String chaine1 = 'Une chaîne de caractères avec deux apostrophes';
String chaine2 = "Une chaîne de caractères avec deux guillemets";

Ce mot String est aussi utilisé lorsque nous déclarons une fonction qui renvoie une chaîne de caractères par exemple.

Sachez simplement que le fait de déclarer une variable avec des guillemets créée automatiquement une chaîne de caractères.

Comme je vous l'ai dit, ce type de variable est très utilisé et notamment via de nombreuses fonctions qui le prennent en paramètre.

L'exemple le plus célèbre est la fonction print() qui affiche du contenu dans la console et qui prend en paramètre des variables de type String:

print('Hello world');

On peut évidemment déclarer en premier lieu une variable String et la placer en tant que paramètre dans la fonction print():

String message = 'Hello World depuis une variable';
print(message);

On peut également ajouter du texte à côté de notre variable en utilisant le symbole $:

print('Le message: $message');

Vous pouvez également utiliser les apostrophes à l'intérieur des guillemets pour mettre en avant une partie de votre message:

print("Le message: '$message'");

Et inversement:

print('Le message: "$message"');

Il est aussi possible comme pour tous les langages d'insérer une apostrophe en tant que caractère, pour cela utilisez la barre oblique inversée (antislash) avant votre apostrophe:

var chaine = 'Il n\'y a rien de plus facile';

Une des possibilités du Dart, et celle permettant de fusionner différentes chaînes de caractères les une avec les autres.

Pour cela vous pouvez les placer les unes à la suite des autres, avec ou sans le symbole "+":

print('Voilà ' 'une' 'chaîne' 'de' 'caractère');
print('Voilà ' + 'une ' + 'chaîne ' + 'de ' + 'caractère');

Enfin, comme on l'a vu dans la première leçon de découverte du Dart, on peut déclarer des chaînes de caractères sur plusieurs lignes sans utiliser de symboles particuliers.

Il suffit pour cela d'utiliser une triple apostrophe ou guillemet pour placer vos caractères et vos retours à la ligne:

print('''Voilà
      comment rédiger
      un paragraphe
      avec des retours
      à la ligne
      très facilement
      ''');
print("""On peut
	faire la même
    chose avec les triples
    guillements
""");

Voilà les principales choses qu'il y a à savoir à propos des chaînes de caractère en Dart.

3. Les nombres

On continue avec le deuxième type de variable le plus répandu, celui des nombres.

Les nombres sont omniprésents en informatique, car ils permettent de manipuler des données, de comparer et de calculer des résultats.

On utilisera les types nombres lorsqu'une donnée numérique va évoluer, que l'on doit la manipuler avec des formules mathématiques par exemple.

Pour déclarer une variable nombre on peut utiliser var ou int pour préciser qu'il s'agit d'un nombre entier:

var nombre1 = 1;
int nombre2 = 42;

Pour déclarer un nombre décimal, avec des chiffres après la virgule, on utilisera le mot double pour le préciser:

var nombre3 = 9.4;
double nombre4 = 1.2;

L'intérêt des nombres, contrairement aux chaînes de caractère est que l'on peut les manipuler.

On peut leur appliquer les opérateurs mathématiques les plus connus:

int nombre1 = 42;
nombre1++; // on ajoute + 1
print(nombre1);

Ou encore:

nombre1 = nombre1 * 2;

Voilà pour les variables de type nombre, nous aurons l'occasion de les utiliser via nos applications Flutter par la suite.

4. Les booléens

Un booléen est un type de variable binaire qui peut prendre seulement deux valeurs: vrai ou faux.

On pourrait utiliser une variable nombre pour faire le même travaille et stocker les valeurs 0 ou 1.

Ce type de variable a été inventé pour gagner du temps et faciliter les syntaxes de code, notamment en ce qui concerne les conditions.

Pour déclarer une variable booléenne on peut à nouveau utiliser le mot var suivi du terme true ou false:

var booleen1 = true;

Ou directement indiquer le type de notre variable avec le mot bool:

bool booleen2 = false;

L'intérêt comme je vous l'ai dit, est de pouvoir effectuer rapidement des conditions sur la valeur de notre booléen:

if(booleen1) {
  print('la variable vaut vrai');
} else {
  print('la variable vaut faux');
}

Nous verrons en détail dans la prochaine leçon l'utilisation des différents opérateurs de boucle et de condition.

Voilà un exemple très schématique de ce à quoi sert une variable booléenne (donner accès ou non à un contenu):

void main() {
  bool myAdmin = false;
  testIsAdmin(myAdmin);
}

testIsAdmin(bool isAdmin) {
  if(isAdmin) {
    print('Il a le droit d\'accéder au contenu');
  } else {
    print('Il n\'a pas le droit d\'accéder à ce contenu');
  }
}

Voilà pour les booléens qui sont finalement assez simple à prendre en main et qui nous serviront par exemple avec Firebase.

5. Les listes (tableau)

On continue avec l'avant-dernier type de variables, les listes qui nous permettent de stocker une suite de données.

Dans d'autres langages, on appelle ce type de variable un tableau, mais en Dart on appelle cela une liste.

Cela représente la même notion, mais la syntaxe du Dart va être orienté autour du mot List en anglais.

Je peux par exemple créer une liste de noms de startup en déclarant la variable suivante:

var startups = ['Apple', 'Google', 'Facebook', 'Amazon'];

Pour comprendre qu'il s'agit d'une liste, il suffit de repérer les crochets qui entoure et englobe notre variable [...].

On peut comme pour les autres types de variables utiliser le diminutif List pour déclarer une nouvelle liste:

List entrepreneurs = ['Elon Musk', 'Steve Jobs', 'Bill Gates'];

Une autre particularité des listes, est de pouvoir stocker différents types de données.

List list = ['Elon Musk', 49, 104.6e9, 'Los Angeles'];

Ce modèle ressemble par ailleurs aux variables Map de Dart, appelés aussi objet que nous verrons juste après.

Là où je vous conseille d'utiliser ce type de structure de données, est lorsque vous allez parcourir vos listes.

En fait l'intérêt principal des listes est de pouvoir être parcouru pour répéter une même action à chaque case de notre liste par exemple.

Nous le verrons dans le prochain chapitre où nous allons utiliser les boucles en Dart pour parcourir nos listes.

Il existe également en Dart toute une suite de syntaxe pour créer et manipuler les listes.

Voilà par exemple la fonction List() pour créer une liste en précisant le nombre de cases souhaitées:

List list = new List(4);

C'est une autre manière pour créer par exemple en premier lieu la liste, et ensuite lui affecter ses valeurs:

fixedList[0] = 'Elon Musk';
fixedList[1] = 49;
fixedList[2] = 104.6e9
fixedList[3] = 'Los Angeles';

Si vous souhaitez créer une liste à la taille variable ne précisez simplement pas de valeur à la fonction List():

List list = new List();

Vous pourrez alors par la suite ajouter manuellement vos nouvelles cases avec la fonction add():

list.add('Amazon');

Voilà pour les notions principales à aborder par rapport à notre variable liste en Dart.

6. Les Maps

Les Maps en Dart sont comme les objets en JavaScript, ils permettent de regrouper différents champs dans une même variable.

Chaque champ sera associé à une clé qui permettra de l'appeler séparément des autres champs.

Pour déclarer une Map on peut utiliser Var et ouvrir des accolades avec nos champs à l'intérieur:

var map = {
  'clé1': 'valeur 1',
  'clé2': 1,
};

On peut aussi utiliser le diminutif Map pour créer une nouvelle Map de la même manière:

Map userData = {
  'pseudo': 'Elon Musk',
  'age': 49
};

Comme pour les listes, on peut utiliser une fonction pour créer une Map vide:

Map userData = new Map();

Mais on peut aussi préciser les types de variables que la Map peut contenir <int, String, etc> et ainsi restreindre les choix:

Map<String, int> userData = new Map();

Comme prévu on peut déclarer un nouveau champ en précisant sa clé (et de la même manière en modifier la valeur par la suite):

userData['pseudo'] = 'Elon Musk';
userData['age'] = 49;

Pour finir on peut reprendre la Map en entier ou juste l'un de ses champs en particulier et afficher son contenu dans la console:

print(userData);
print('${userData['pseudo']} a ${userData['age']} ans');

Voilà pour notre dernier type de variable les Maps, avec ses principales spécificités.

Cela conclut aussi cette leçon consacrée aux différents types de variables Dart et leur manipulation dans notre code.