Tabela de Tipos Básicos Nativos do Dart
| Nome da Categoria | Identificador do Tipo | Escrita / Exemplo Literal | Descrição Resumida |
|---|---|---|---|
| Numbers (Números) | int, double | int a = 10; double b = 3.14; | Duas categorias de números: inteiros e ponto flutuante de dupla precisão, possuem a classe pai comum num |
| Strings (Cadeias de Texto) | String | var str = "foxdevelop.com"; | Armazena sequência de caracteres UTF-16, suporta interpolação, textos multilinhas e strings brutas |
| Booleans (Booleanos) | bool | bool flag = true; | Apenas dois valores possíveis: true / false |
| Records (Registros de Tupla) | Literal de registro (v1, v2) | var record = (10, "test"); | Tipo composto de tamanho fixo com múltiplos valores, suporta desestruturação |
| Functions (Funções) | Function | void fn() {} Function func = ()=>1; | São objetos de primeira classe: podem ser atribuídos, passados como parâmetro e retornados |
| Lists (Listas / Vetores) | List | var list = [1,2,3]; | Coleção ordenada que aceita elementos repetidos, equivalente a vetores |
| Sets (Conjuntos) | Set | var set = {1,2,3}; | Coleção desordenada sem elementos duplicados |
| Maps (Mapeamento Chave-Valor) | Map | var map = {"name":"Tom"}; | Estrutura de armazenamento de pares chave-valor, as chaves são únicas |
| Runes (Pontos de Código Unicode) | Runes | Runes("\u{1f600}") | Acesso aos pontos de código Unicode no nível baixo; oficialmente recomenda-se o pacote characters no lugar |
| Null (Valor Vazio) | Null | Null n = null; | Seu único valor é null, tipo base principal do sistema de segurança de nulos |
Todas as variáveis em Dart são fundamentalmente objetos (instâncias de classes). Você pode criá-las rapidamente com literais ou inicializar chamando o construtor correspondente.
'hello' é um literal de string, true um literal booleano; o construtor Map() cria uma instância de Map.
Tipos Auxiliares Especiais da Linguagem
Não são tipos básicos nativos, mas todos são palavras-chave do Dart.
Esses tipos cumprem funções especiais no sistema de tipos, programação assíncrona e verificação estática:
| Tipo | Descrição da Função |
|---|---|
Object | Classe pai de todas as classes Dart, exceto Null |
Enum | Classe pai de todas as enumerações |
Future / Stream | Específicos para programação assíncrona |
Iterable | Usado para loops for-in e geradores síncronos |
Never | Expressão que nunca conclui a execução normalmente (usado para marcar funções que sempre lançam exceções) |
dynamic | Desativa a verificação estática de tipos; prefira usar Object / Object? |
void | Sem valor de retorno, amplamente utilizado como tipo de retorno de funções |
1 Numbers Números
Classe pai: num
Os números são divididos em duas subclasses: int (inteiro) e double (ponto flutuante), ambas herdam de num
1.1 int Inteiro
Diferença de intervalos (o Dart também funciona como frontend, por isso existe a versão Web):
- Plataformas nativas:
-2^63 ~ 2^63 - 1 - Web (baseado em JS):
-2^53 ~ 2^53 - 1
Sem ponto decimal; suporta notação decimal e hexadecimal com prefixo 0x
Exemplo
void main() {
// Inteiro decimal
var pageCount = 123;
// Hexadecimal
var hex = 0xDEADBEEF;
// Separador de dígitos com sublinhado (Dart 3.6+, melhora legibilidade)
var million = 1_000_000;
var mac = 0x00_14_22_01_23_45;
print(pageCount);
print(hex);
print(million);
print(mac);
}Code language: Dart (dart)
Saída
123
3735928559
1000000
86469845829
1.2 double Ponto flutuante de dupla precisão
Contém ponto decimal ou notação científica
void main() {
var pi = 3.14; // ponto decimal
var raid = 1.61e5; // 1.61 * 10^5 notação científica
var tiny = 0.000_000_000_02; // sublinhado em decimais
print(pi);
print(raid);
print(tiny);
}Code language: PHP (php)
3.14
161000.0
2e-11Code language: CSS (css)
1.3 Classe pai num
Variáveis declaradas como num podem armazenar tanto int quanto double:
void main() {
num money = 5;
money += 2.5; // Conversão automática para double, money = 7.5
// Atribuir int a double converte automaticamente para 1.0
double zoom = 1;
print(money);
print(zoom);
}Code language: PHP (php)
Saída
7.5
1.0Code language: CSS (css)
1.4 Conversão entre 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); // Mantém 2 casas decimais → "3.14"
print(one);
print(pi);
print(pi2);
}Code language: JavaScript (javascript)
Saída
123
3.14
3.14Code language: CSS (css)
1.5 Operadores bit a bit exclusivos de int
Apenas int suporta deslocamento, AND/OR/XOR bit a bit e negação bit a bit. Veja: Dart Bitwise and shift operators – FoxDevelop
void main() {
print(3 << 1); // Deslocamento à esquerda 0011 <<1 → 0110
print(3 | 4); // OR bit a bit
print(3 & 4); // AND bit a bit
print(~3); // Negação bit a bit
}Code language: PHP (php)
6
7
0
-4
1.6 Constantes numéricas (compile-time constant)
Literais numéricos puros e operações aritméticas com constantes podem ser marcados com const
Valores calculados de forma fixa durante a fase de compilação (antes da execução do programa) e que nunca mudam em tempo de execução são chamados de constantes de tempo de compilação, marcados com const.
const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Constante de compilaçãoCode language: JavaScript (javascript)
const: Constante de compilação; o compilador calcula a expressão antes do programa rodar e grava o valor fixo diretamente no binário compilado; durante a execução apenas lê, sem cálculos extras.
final: Constante de tempo de execução (recebe valor na execução e não pode ser alterado depois).
1.7 Métodos matemáticos nativos
Disponíveis diretamente em num; cálculos complexos usam o pacote dart:math
abs(), ceil(), floor(), round() etc.
num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Code language: PHP (php)
2. String Cadeia de Texto
Sequência codificada em UTF-16 para representar texto, duas formas de declaração: aspas simples ou duplas.
2.1 Formas de declaração: aspas simples / duplas
var s1 = 'cadeia com aspas simples';
var s2 = "cadeia com aspas duplas";
// Caracteres de escape
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Alternar aspas dispensa escape
Code language: JavaScript (javascript)
Alguns caracteres dentro de strings possuem significado especial (como aspas duplas ", quebras de linha, barra invertida \). Escritos diretamente quebram a estrutura da string e causam erro no compilador.
O caractere de escape \ remove o significado especial dos caracteres ou exibe símbolos invisíveis.
Exemplo: teclas como Enter e Tab são invisíveis e usam sequências de escape como \t. Teste o código abaixo para entender:
print("name\tage\tcountry");
print("Jack\t18\tUSA");
print("Lucy\t20\tEgypt");Code language: PHP (php)
2.2 Interpolação de string ${expressão}
- Para variáveis simples, as chaves podem ser omitidas:
$variável - Objetos chamam automaticamente
.toString()
void main() {
var word = "interpolation";
var str1 = "Dart tem $word";
var str2 = "Maiúsculas: ${word.toUpperCase()}";
print(str2); // Maiúsculas: INTERPOLATION
}Code language: JavaScript (javascript)
2.3 Concatenação de strings
- Literais adjacentes são concatenados automaticamente (mesmo com quebra de linha)
- Operador
+para concatenação
var s1 = "Primeira linha"
"Segunda linha";
var s2 = "a" + "b";
assert(s1 == "Primeira linhaSegunda linha");
assert(s2 == "ab");Code language: JavaScript (javascript)
2.4 Strings multilinhas: três aspas simples ”’ / três aspas duplas “””
void main() {
var multi1 = '''
Texto
multilinha
''';
var multi2 = """
String multilinha com três aspas duplas
hello foxdevelop.com
""";
print(multi1);
print(multi2);
}Code language: PHP (php)
Texto
multilinha
String multilinha com três aspas duplas
hello foxdevelop.comCode language: JavaScript (javascript)
Aspas duplas dentro de três aspas simples e vice-versa não precisam de caractere de escape:
2.5 String bruta r”” não interpreta sequências de escape
var raw = r"A quebra de linha \n não terá efeito";
print(raw); // Exibe \n literalmente
Code language: PHP (php)
2.6 Restrições para strings const
O conteúdo interpolado deve ser uma constante de tempo de compilação (números, bool, strings constantes); variáveis normais e coleções não são permitidas.
const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// String constante válida
const valid = "$cNum $cBool $cStr";
var normalNum = 10;
// Inválido: interpolação contém variável não constante
// const invalid = "$normalNum";
Code language: JavaScript (javascript)
3. bool Tipo Booleano
Apenas duas instâncias: true / false, ambas são constantes de compilação
Dart segue tipagem forte: não é possível avaliar verdadeiro/falso diretamente por valores, comparações explícitas são obrigatórias
void main() {
var emptyStr = "";
print(emptyStr.isEmpty); // Verificar string vazia
var zero = 0;
print(zero == 0); // Verificar zero
var nil = null;
print(nil == null); // Verificar null
var nan = 0 / 0;
print(nan.isNaN); // Verificar não número
}Code language: PHP (php)
4. Runes & characters Manipulação de caracteres Unicode
- Runes: expõe os pontos de código Unicode internos, solução antiga
- Recomendado
package:characters: processa caracteres visuais completos (grupos de grafemas, ex: emoji de bandeira)
Sintaxe de escape Unicode
- 4 dígitos hexadecimais:
\uXXXX - Pontos de código grandes com mais de 4 dígitos:
\u{hexadecimal}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Code language: JavaScript (javascript)
Exemplo do pacote characters
import 'package:characters/characters.dart';
void main() {
var text = "Hi 🇩🇰";
print(text.characters.last); // Exibe o emoji completo da bandeira da Dinamarca
}
Code language: JavaScript (javascript)
5. Symbol Símbolo
Usado para reflexão e ofuscação de código, literal #identificador, constante de compilação
A ofuscação não altera os Symbols; ideal para referenciar identificadores dinamicamente por nome.
#userName
#getData
Code language: CSS (css)
6. Null Tipo Valor Vazio
Seu único valor é null. No sistema de segurança de nulos, Null é um tipo raiz independente, todos os tipos anuláveis são compatíveis com null.
String? name = null;
Null n = null;
Code language: JavaScript (javascript)