Tableau des types primitifs intégrés de Dart
| Nom de catégorie | Identifiant du type | Écriture / exemple littéral | Description courte |
|---|---|---|---|
| Numbers (Nombres) | int, double | int a = 10; double b = 3.14; | Deux familles de nombres : entiers et nombres à virgule flottante double précision ; leur classe parente commune est num |
| Strings (Chaînes de caractères) | String | var str = "foxdevelop.com"; | Stocke une séquence de caractères UTF-16, gère l’interpolation, les chaînes multilignes et les chaînes brutes |
| Booleans (Booléens) | bool | bool flag = true; | Seules deux valeurs possibles : true / false |
| Records (Enregistrements tuples) | Littéral record (v1, v2) | var record = (10, "test"); | Type composite à longueur fixe avec plusieurs valeurs, prend en charge la décomposition |
| Functions (Fonctions) | Function | void fn() {} Function func = ()=>1; | Objets de première classe : assignables, transmissibles en paramètre, utilisables comme valeur de retour |
| Lists (Listes / Tableaux) | List | var list = [1,2,3]; | Collection ordonnée autorisant les doublons, équivalent aux tableaux |
| Sets (Ensembles) | Set | var set = {1,2,3}; | Collection non ordonnée sans éléments dupliqués |
| Maps (Correspondances clé-valeur) | Map | var map = {"name":"Tom"}; | Structure de stockage de paires clé-valeur, les clés sont uniques |
| Runes (Points de code Unicode) | Runes | Runes("\u{1f600}") | Accès bas niveau aux points de code Unicode ; l’utilisation du package characters est officiellement recommandée à la place |
| Null (Valeur nulle) | Null | Null n = null; | Sa seule valeur est null, type racine fondamental du système de sécurité null |
Toutes les variables en Dart sont fondamentalement des objets (instances de classes). Vous pouvez les créer rapidement avec des littéraux ou les initialiser en appelant le constructeur correspondant.
'hello' est un littéral de chaîne, true un littéral booléen ; le constructeur Map() crée une instance de Map.
Types auxiliaires spéciaux du langage
Ce ne sont pas des types primitifs intégrés, mais ce sont tous des mots-clés de Dart.
Ces types remplissent des rôles spécifiques pour le système de types, la programmation asynchrone et la vérification statique :
| Type | Description de son rôle |
|---|---|
Object | Classe parente de toutes les classes Dart, à l’exception de Null |
Enum | Classe parente de toutes les énumérations |
Future / Stream | Spécifiques à la programmation asynchrone |
Iterable | Utilisé pour les boucles for-in et les générateurs synchrones |
Never | Expression qui ne termine jamais normalement (utilisé pour marquer les fonctions qui lèvent toujours une exception) |
dynamic | Désactive la vérification statique des types ; préférez utiliser Object / Object? |
void | Sans valeur de retour, fréquemment utilisé comme type de retour des fonctions |
1 Numbers Nombres
Classe parente : num
Les nombres se divisent en deux sous-classes : int (entier) et double (virgule flottante), toutes deux héritent de num
1.1 int Entier
Différence de plages (Dart fonctionne aussi en frontend, d’où l’existence d’une version Web) :
- Plateformes natives :
-2^63 ~ 2^63 - 1 - Web (basé sur JS) :
-2^53 ~ 2^53 - 1
Sans point décimal ; prend en charge la notation décimale et hexadécimale avec le préfixe 0x
Exemple
void main() {
// Entier décimal
var pageCount = 123;
// Hexadécimal
var hex = 0xDEADBEEF;
// Séparateur de chiffres par underscore (Dart 3.6+, améliore la lisibilité)
var million = 1_000_000;
var mac = 0x00_14_22_01_23_45;
print(pageCount);
print(hex);
print(million);
print(mac);
}Langage du code : Dart (dart)
Résultat d’exécution
123
3735928559
1000000
86469845829
1.2 double Nombre à virgule flottante double précision
Contient un point décimal ou une notation scientifique
void main() {
var pi = 3.14; // point décimal
var raid = 1.61e5; // 1,61 * 10^5 notation scientifique
var tiny = 0.000_000_000_02; // underscore sur les décimales
print(pi);
print(raid);
print(tiny);
}Langage du code : PHP (php)
3.14
161000.0
2e-11Langage du code : CSS (css)
1.3 Classe parente num
Les variables déclarées en num peuvent stocker à la fois des int et des double :
void main() {
num money = 5;
money += 2.5; // Conversion automatique en double, money = 7,5
// Affecter un int à un double convertit automatiquement en 1,0
double zoom = 1;
print(money);
print(zoom);
}Langage du code : PHP (php)
Résultat d’exécution
7.5
1.0Langage du code : CSS (css)
1.4 Conversion mutuelle des types
void main() {
// String → int
var one = int.parse('123');
// String → double
var pi = double.parse('3.14');
// int / double → String
String intStr = 99.toString();
String pi2 = 3.14159.toStringAsFixed(2); // Conserver 2 décimales → "3.14"
print(one);
print(pi);
print(pi2);
}Langage du code : JavaScript (javascript)
Résultat d’exécution
123
3.14
3.14Langage du code : CSS (css)
1.5 Opérateurs bit à bit exclusifs à int
Seul int gère les décalages, les opérateurs ET/OU/XOR bit à bit et la négation bit à bit. Voir : Dart Bitwise and shift operators – FoxDevelop
void main() {
print(3 << 1); // Décalage gauche 0011 <<1 → 0110
print(3 | 4); // OU bit à bit
print(3 & 4); // ET bit à bit
print(~3); // Négation bit à bit
}Langage du code : PHP (php)
6
7
0
-4
1.6 Constantes numériques (compile-time constant)
Les littéraux numériques purs et les opérations arithmétiques entre constantes peuvent être marqués avec const
Les valeurs calculées de manière fixe pendant la phase de compilation (avant l’exécution du programme), qui ne changent jamais à l’exécution et ne nécessitent pas de recalcul, sont appelées constantes de compilation et modifiées par const.
const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Constante de compilationLangage du code : JavaScript (javascript)
const : constante de compilation ; le compilateur calcule l’expression avant l’exécution et écrit directement la valeur fixe dans le binaire compilé ; à l’exécution, seule une lecture a lieu, pas de calcul supplémentaire.
final : constante d’exécution (la valeur est affectée au lancement et ne peut plus être modifiée après).
1.7 Méthodes mathématiques natives
Disponibles directement sur num ; pour des calculs complexes utilisez dart:math
abs(), ceil(), floor(), round(), etc.
num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Langage du code : PHP (php)
2. String Chaîne de caractères
Séquence encodée en UTF-16 pour représenter du texte, deux manières de déclaration : guillemets simples ou doubles.
2.1 Modes de déclaration : guillemets simples / doubles
var s1 = 'chaîne avec guillemets simples';
var s2 = "chaîne avec guillemets doubles";
// Caractères d'échappement
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Alterner les guillemets évite l'échappement
Langage du code : JavaScript (javascript)
Certains caractères dans les chaînes ont une signification spéciale (guillemets doubles ", saut de ligne, antislash \). Écrits directement, ils cassent la structure de la chaîne et provoquent des erreurs de compilation.
Le caractère d’échappement \ annule le rôle spécial des caractères ou affiche des symboles invisibles.
Exemple : les touches Entrée, Tab ne sont pas visibles et nécessitent des séquences d’échappement comme \t. Testez le code suivant pour comprendre :
print("name\tage\tcountry");
print("Jack\t18\tUSA");
print("Lucy\t20\tEgypt");Langage du code : PHP (php)
2.2 Interpolation de chaîne ${expression}
- Pour les variables simples, les accolades peuvent être omises :
$variable - Les objets appellent automatiquement
.toString()
void main() {
var word = "interpolation";
var str1 = "Dart dispose de la fonction $word";
var str2 = "Majuscules : ${word.toUpperCase()}";
print(str2); // Majuscules : INTERPOLATION
}Langage du code : JavaScript (javascript)
2.3 Concaténation de chaînes
- Les littéraux adjacents se concatènent automatiquement (même avec saut de ligne)
- Opérateur
+pour concaténer
var s1 = "Première ligne"
"Deuxième ligne";
var s2 = "a" + "b";
assert(s1 == "Première ligneDeuxième ligne");
assert(s2 == "ab");Langage du code : JavaScript (javascript)
2.4 Chaînes multilignes : triples guillemets simples »’ / triples guillemets doubles « » »
void main() {
var multi1 = '''
Texte
multiligne
''';
var multi2 = """
Chaîne multiligne avec triples guillemets doubles
hello foxdevelop.com
""";
print(multi1);
print(multi2);
}Langage du code : PHP (php)
Texte
multiligne
Chaîne multiligne avec triples guillemets doubles
hello foxdevelop.comLangage du code : CSS (css)
Les guillemets doubles à l’intérieur de triples simples et inversement n’ont pas besoin d’échappement :
2.5 Chaînes brutes r » » sans interprétation des échappements
var raw = r"Le saut de ligne \n n'a aucun effet";
print(raw); // Affiche \n tel quel
Langage du code : PHP (php)
2.6 Restrictions sur les chaînes const
Le contenu interpolé doit être une constante de compilation (nombres, bool, chaînes constantes) ; les variables normales et collections ne sont pas autorisées.
const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// Chaîne constante valide
const valid = "$cNum $cBool $cStr";
var normalNum = 10;
// Invalide : l'interpolation contient une variable non constante
// const invalid = "$normalNum";
Langage du code : JavaScript (javascript)
3. bool Type booléen
Deux seules instances : true / false, toutes deux des constantes de compilation
Dart suit un typage fort : impossible d’évaluer directement la véracité par des valeurs, des comparaisons explicites sont obligatoires
void main() {
var emptyStr = "";
print(emptyStr.isEmpty); // Vérifier chaîne vide
var zero = 0;
print(zero == 0); // Vérifier zéro
var nil = null;
print(nil == null); // Vérifier null
var nan = 0 / 0;
print(nan.isNaN); // Vérifier non-nombre
}Langage du code : PHP (php)
4. Runes & characters Gestion des caractères Unicode
- Runes : expose les points de code Unicode internes, solution obsolète
- Recommandé
package:characters: traite les caractères visuellement complets (groupes de graphèmes, ex : emojis de drapeaux)
Syntaxe d’échappement Unicode
- 4 chiffres hexadécimaux :
\uXXXX - Grands points de code avec plus de 4 chiffres :
\u{valeur_hex}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Langage du code : JavaScript (javascript)
Exemple du package characters
import 'package:characters/characters.dart';
void main() {
var text = "Hi 🇩🇰";
print(text.characters.last); // Affiche l'emoji drapeau du Danemark complet
}
Langage du code : JavaScript (javascript)
5. Symbol Symbole
Utilisé pour la réflexion et l’obfuscation du code, littéral #identifiant, constante de compilation
L’obfuscation ne modifie pas les Symbol ; adapté pour référencer dynamiquement des identifiants par leur nom.
#userName
#getData
Langage du code : CSS (css)
6. Null Type valeur nulle
Sa seule valeur est null. Dans le système de sécurité null, Null est un type racine indépendant, tous les types annulables sont compatibles avec null.
String? name = null;
Null n = null;
Langage du code : JavaScript (javascript)