Les variables permeten emmagatzemar les dades de l'aplicació o el programa. En Dart podem crear variables de manera genèrica fent servir l'indicatiu var. Per exemple:
... var nom = 'Joana'; var num = 42; var temper = 25.4; ...
L'indicatiu var només es posa en el moment de crear la variable, no les següents vegades que la fem servir.
En Dart totes les variables tenen tipus. A les variables declarades amb var, el tipus se'ls assigna de manera automàtica; a partir del valor que s'hi posi en el primer ús. A una variable d'un determinat tipus (encara que s'hagi creat amb var) no s'hi pot posar un valor de tipus diferent. Posant el ratolí sobre el nom de la variable o sobre el seu valor ens indicarà el seu tipus (a la imatge, num és de tipus int).

Les variables també es poden declarar indicant directament el seu tipus. Els tipus de variables d' ús més habitual són:
| Tipus | Contingut |
| bool | Variable booleana (binària) Només pot valer true o false |
| int | Nombres enters |
| double | Nombres reals |
| num | Valor numèric (real o enter) |
| String | Text, cadena de caràcters |
A les variables reals se'ls poden assignar valors enters, que seran convertits automàticament a reals.
... bool acabat = false; int num = 42; double temper = 25.4; double humi = 47; // Es convertirà a 47.0 num lectura = 65.2; String nom = 'Joana'; String cognom = "Raspall"; ...
Hi ha un real especial que representa un valor infinit. Encara que, òbviament, el seu valor no és infinit, el representa i és molt útil quan es vol que una amplada o una alçada siguin tant grans com l'espai disponible.
... double infinit = double.infinity; ...
En alguns casos ens pot interessar bloquejar variables perquè no es puguin modificar; és a dir, fer que es comportin com a constants. Això ho podem fer posant const o final al davant en el moment de declarar-les. La diferència és que les const s'avaluen a l'hora de compilar i les final en el moment d'executar. Les const, doncs, són fixes des del moment de crear el programa mentre que a les final se'ls pot assignar el valor (per una única vegada) durant l'execució del programa.
... final String nom = 'Joana'; const String cognom = "Raspall"; nom = 'Emma'; // Aquesta línia donarà un error ...
Existeix la possibilitat de declarar les variables com a dynamic. Si es declaren així, poden tenir qualsevol tipus de valor però s'ha de vigilar molt per evitar cometre errors en el seu ús; atès que, en cada moment, el valor s'ha de correspondre a la operació que volem fer amb la variable. Com a idea general, no és recomanable declarar les variables com a dynamic.
... dynamic element = 42; element = 'calaix'; element = 32.7; ...
En cas d'haver de posar caràcters especials en una cadena de caràcters, cal fer servir escapament.
Per convertir una variable real en entera, podem fer servir la funció toInt. Aquesta funció el que fa és prescindir dels decimals.
... double real = 2.7; int enter = real.toInt(); // Valdrà 2 ...
Si necessitem un arrodoniment, li podem sumar 0,5 abans de fer la conversió.
... double real = 2.7; int enter = (real + 0.5).toInt(); // Valdrà 3 ...
També tenim la funció toDouble per convertir enrers a reals i la funció toString per convertir variables numèriques (enteres o reals) a text.
Una variable a la qual no li hem assignat cap valor té un valor nul, que s'expressa com null. Dart no permet l'ús d'una variable que tingui valor nul, excepte si s'ha indicat explícitament que pot tenir-lo. Per indicar que pot tenir un valor nul, es posa un interrogant després del tipus de la variable; per exemple:
... int? valor double? lectura String? text ...
Qualsevol d'aquestes variables poden tenir un valor (del tipus corresponent) o un null (si no ha estat inicialitzada o si li hem assignat null explícitament.
... valor = null; ...
En alguns casos ens pot interessar comprovar si una variable val null:
...
if(valor != null){
print("El valor és $valor");
}
...
Els tipus de variable que poden tenir un valor nul són conceptualment diferents d'aquells que no el poden contenir, és a dir que un int no és el mateix que un int?; per tant, la següent assignació és incorrecta:
... int? valor; int dada = valor; ...
Podem forçar que l'assignació es faci si estem segurs que la variable no serà mai nul·la, això ho fem posant un signe d'admiració després de la variable que pot ser nul·la:
... int? valor; int dada = valor!; ...
Però el programa s'aturarà i donarà un error si, quan arriba a l'assignació, la variable valor és null.
També podem fer una assignació d'una variable que pot ser nul·la sobre una que no ho pot ser si establim un valor per defecte per quan la variable sigui null. Per exemple:
... int? valor; int dada = valor ?? 0; // Si la variable val null retorna 0 ...
Una altra manera d'assignar valors per defecte seria la següent:
... int? valor = 4; int dada; valor ??= 0; dada = valor; ...
Tal com està ara, dada i valor acabarien valent 4. Si a la primera línia deixem d'assignar-li el valor, les dues variable acabaran valent 0, el valor per defecte.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.