Tabla de tipos básicos integrados de Dart
| Nombre de categoría | Identificador de tipo | Sintaxis / ejemplo literal | Descripción breve |
|---|---|---|---|
| Numbers (Números) | int, double | int a = 10; double b = 3.14; | Dos grupos de números: enteros y números de coma flotante de doble precisión; su clase padre común es num |
| Strings (Cadenas de texto) | String | var str = "foxdevelop.com"; | Almacena secuencias de caracteres UTF-16, admite interpolación, cadenas multilínea y cadenas en bruto |
| Booleans (Booleanos) | bool | bool flag = true; | Solo dos valores posibles: true / false |
| Records (Registros de tupla) | Literal de registro (v1, v2) | var record = (10, "test"); | Tipo compuesto de longitud fija con varios valores, admite desestructuración |
| Functions (Funciones) | Function | void fn() {} Function func = ()=>1; | Son objetos de primera clase: se pueden asignar, pasar como parámetro y devolver como valor de retorno |
| Lists (Listas / Arrays) | List | var list = [1,2,3]; | Colección ordenada que permite elementos repetidos, equivalente a arrays |
| Sets (Conjuntos) | Set | var set = {1,2,3}; | Colección desordenada sin elementos duplicados |
| Maps (Mapeos clave-valor) | Map | var map = {"name":"Tom"}; | Estructura de almacenamiento de pares clave-valor, las claves son únicas |
| Runes (Puntos de código Unicode) | Runes | Runes("\u{1f600}") | Accede a los puntos de código Unicode a bajo nivel; oficialmente se recomienda usar el paquete characters en su lugar |
| Null (Valor vacío) | Null | Null n = null; | Su único valor es null, tipo raíz fundamental del sistema de seguridad nula |
Todas las variables en Dart son esencialmente objetos (instancias de clase). Se pueden crear rápidamente mediante literales o inicializar llamando al constructor correspondiente.
'hello' es un literal de cadena, true un literal booleano; el constructor Map() crea una instancia de Map.
Tipos auxiliares especiales del lenguaje
No son tipos básicos integrados, pero todos son palabras clave de Dart.
Estos tipos cumplen funciones especiales en el sistema de tipos, programación asíncrona y comprobación estática:
| Tipo | Descripción de su función |
|---|---|
Object | Clase padre de todas las clases Dart excepto Null |
Enum | Clase padre de todas las enumeraciones |
Future / Stream | Específicos para programación asíncrona |
Iterable | Usado para bucles for-in y generadores síncronos |
Never | Expresión que nunca finaliza correctamente (se usa para marcar funciones que siempre lanzan excepciones) |
dynamic | Desactiva la comprobación estática de tipos; se recomienda usar Object / Object? en su lugar |
void | Sin valor de retorno, usado frecuentemente como tipo de retorno de funciones |
1 Numbers Números
Clase padre: num
Los números se dividen en dos subclases: int (entero) y double (coma flotante), ambas heredan de num
1.1 int Entero
Diferencia de rangos (Dart también se usa en frontend, por lo que existe la versión web):
- Plataformas nativas:
-2^63 ~ 2^63 - 1 - Web (basado en JS):
-2^53 ~ 2^53 - 1
Sin punto decimal; admite notación decimal y hexadecimal con prefijo 0x
Ejemplo
void main() {
// Entero decimal
var pageCount = 123;
// Hexadecimal
var hex = 0xDEADBEEF;
// Separador de dígitos con guion bajo (Dart 3.6+, mejora la legibilidad)
var million = 1_000_000;
var mac = 0x00_14_22_01_23_45;
print(pageCount);
print(hex);
print(million);
print(mac);
}Lenguaje del código: Dart (dart)
Salida
123
3735928559
1000000
86469845829
1.2 double Número de coma flotante de doble precisión
Contiene punto decimal o notación científica
void main() {
var pi = 3.14; // punto decimal
var raid = 1.61e5; // 1.61 * 10^5 notación científica
var tiny = 0.000_000_000_02; // guion bajo en decimales
print(pi);
print(raid);
print(tiny);
}Lenguaje del código: PHP (php)
3.14
161000.0
2e-11Lenguaje del código: CSS (css)
1.3 Clase padre num
Las variables declaradas como num pueden almacenar tanto int como double:
void main() {
num money = 5;
money += 2.5; // Convierte automáticamente a double, money = 7.5
// Al asignar un int a double se convierte automáticamente a 1.0
double zoom = 1;
print(money);
print(zoom);
}Lenguaje del código: PHP (php)
Salida
7.5
1.0Lenguaje del código: CSS (css)
1.4 Conversión mutua de tipos
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); // Mantener 2 decimales → "3.14"
print(one);
print(pi);
print(pi2);
}Lenguaje del código: JavaScript (javascript)
Salida
123
3.14
3.14Lenguaje del código: CSS (css)
1.5 Operadores bit a bit exclusivos de int
Solo int admite desplazamientos, operadores AND/OR/XOR bit a bit y negación bit a bit. Consulta: Dart Bitwise and shift operators – FoxDevelop
void main() {
print(3 << 1); // Desplazamiento a la izquierda 0011 <<1 → 0110
print(3 | 4); // OR bit a bit
print(3 & 4); // AND bit a bit
print(~3); // Negación bit a bit
}Lenguaje del código: PHP (php)
6
7
0
-4
1.6 Constantes numéricas (compile-time constant)
Los literales numéricos puros y las operaciones aritméticas con constantes se pueden marcar con const
Los valores que se calculan de forma fija durante la fase de compilación (antes de ejecutar el programa) y nunca cambian en tiempo de ejecución se denominan constantes de compilación y se modifican con const.
const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Constante de compilaciónLenguaje del código: JavaScript (javascript)
const: constante de compilación; el compilador calcula la expresión antes de ejecutar el programa y guarda el valor fijo directamente en el binario compilado; en tiempo de ejecución solo se lee, sin cálculos adicionales.
final: constante de tiempo de ejecución (se asigna al ejecutar y no se puede modificar después).
1.7 Métodos matemáticos integrados
Disponibles directamente en num; para cálculos complejos usa dart:math
abs(), ceil(), floor(), round(), etc.
num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Lenguaje del código: PHP (php)
2. String Cadena de texto
Secuencia codificada en UTF-16 para representar texto; dos formas de definición: comillas simples o dobles.
2.1 Formas de definición: comillas simples / dobles
var s1 = 'cadena con comillas simples';
var s2 = "cadena con comillas dobles";
// Caracteres de escape
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Alternar comillas evita escapar
Lenguaje del código: JavaScript (javascript)
Algunos caracteres dentro de cadenas tienen un significado especial (como las comillas dobles ", saltos de línea, barra invertida \). Si se escriben directamente rompen la estructura de la cadena y causan errores del compilador.
El carácter de escape \ anula el significado especial de los caracteres o imprime símbolos invisibles.
Ejemplo: teclas como Enter o Tab no son visibles y requieren secuencias de escape como \t. Prueba el siguiente código para entenderlo:
print("name\tage\tcountry");
print("Jack\t18\tUSA");
print("Lucy\t20\tEgypt");Lenguaje del código: PHP (php)
2.2 Interpolación de cadenas ${expresión}
- En variables simples se pueden omitir las llaves:
$variable - Los objetos llaman automáticamente a
.toString()
void main() {
var word = "interpolation";
var str1 = "Dart tiene $word";
var str2 = "Mayúsculas: ${word.toUpperCase()}";
print(str2); // Mayúsculas: INTERPOLATION
}Lenguaje del código: JavaScript (javascript)
2.3 Concatenación de cadenas
- Literales adyacentes se concatenan automáticamente (incluso con salto de línea)
- Operador
+para concatenar
var s1 = "Primera línea"
"Segunda línea";
var s2 = "a" + "b";
assert(s1 == "Primera líneaSegunda línea");
assert(s2 == "ab");Lenguaje del código: JavaScript (javascript)
2.4 Cadenas multilínea: tres comillas simples »’ / tres comillas dobles «»»
void main() {
var multi1 = '''
Texto
multilínea
''';
var multi2 = """
Cadena multilínea con tres comillas dobles
hello foxdevelop.com
""";
print(multi1);
print(multi2);
}Lenguaje del código: PHP (php)
Texto
multilínea
Cadena multilínea con tres comillas dobles
hello foxdevelop.comLenguaje del código: CSS (css)
Las comillas dobles dentro de triples simples y viceversa no necesitan carácter de escape:
2.5 Cadenas en bruto r»» sin interpretar secuencias de escape
var raw = r"El salto de línea \n no surte efecto";
print(raw); // Imprime \n tal cual
Lenguaje del código: PHP (php)
2.6 Restricciones de cadenas constantes
El contenido interpolado debe ser una constante de compilación (números, bool, cadenas constantes); no se admiten variables normales ni colecciones.
const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// Cadena constante válida
const valid = "$cNum $cBool $cStr";
var normalNum = 10;
// Inválido: la interpolación contiene una variable no constante
// const invalid = "$normalNum";
Lenguaje del código: JavaScript (javascript)
3. bool Tipo booleano
Solo dos instancias: true / false, ambas son constantes de compilación
Dart tiene tipado estricto: no se puede evaluar la veracidad directamente con valores, se requieren comparaciones explícitas
void main() {
var emptyStr = "";
print(emptyStr.isEmpty); // Comprobar cadena vacía
var zero = 0;
print(zero == 0); // Comprobar cero
var nil = null;
print(nil == null); // Comprobar null
var nan = 0 / 0;
print(nan.isNaN); // Comprobar no número
}Lenguaje del código: PHP (php)
4. Runes & characters Manejo de caracteres Unicode
- Runes: exposición de los puntos de código Unicode internos, solución obsoleta
- Recomendado
package:characters: procesar caracteres visuales completos (grupos de grafemas, ej: emojis de banderas)
Sintaxis de escape Unicode
- 4 dígitos hexadecimales:
\uXXXX - Puntos de código grandes de más de 4 dígitos:
\u{hexadecimal}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Lenguaje del código: JavaScript (javascript)
Ejemplo del paquete characters
import 'package:characters/characters.dart';
void main() {
var text = "Hi 🇩🇰";
print(text.characters.last); // Imprime el emoji completo de la bandera de Dinamarca
}
Lenguaje del código: JavaScript (javascript)
5. Symbol Símbolo
Usado para reflexión y ofuscación de código, literal #identificador, constante de compilación
La ofuscación no modifica los Symbol; ideal para referenciar identificadores dinámicamente por su nombre.
#userName
#getData
Lenguaje del código: CSS (css)
6. Null Tipo valor vacío
Su único valor es null. En el sistema de seguridad nula, Null es un tipo raíz independiente, todos los tipos anulables son compatibles con null.
String? name = null;
Null n = null;
Lenguaje del código: JavaScript (javascript)