Tipos Nativos do Dart

Tabela de Tipos Básicos Nativos do Dart

Nome da CategoriaIdentificador do TipoEscrita / Exemplo LiteralDescrição Resumida
Numbers (Números)int, doubleint 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)Stringvar str = "foxdevelop.com";Armazena sequência de caracteres UTF-16, suporta interpolação, textos multilinhas e strings brutas
Booleans (Booleanos)boolbool 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)Functionvoid fn() {} Function func = ()=>1;São objetos de primeira classe: podem ser atribuídos, passados como parâmetro e retornados
Lists (Listas / Vetores)Listvar list = [1,2,3];Coleção ordenada que aceita elementos repetidos, equivalente a vetores
Sets (Conjuntos)Setvar set = {1,2,3};Coleção desordenada sem elementos duplicados
Maps (Mapeamento Chave-Valor)Mapvar map = {"name":"Tom"};Estrutura de armazenamento de pares chave-valor, as chaves são únicas
Runes (Pontos de Código Unicode)RunesRunes("\u{1f600}")Acesso aos pontos de código Unicode no nível baixo; oficialmente recomenda-se o pacote characters no lugar
Null (Valor Vazio)NullNull 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:

TipoDescrição da Função
ObjectClasse pai de todas as classes Dart, exceto Null
EnumClasse pai de todas as enumerações
Future / StreamEspecíficos para programação assíncrona
IterableUsado para loops for-in e geradores síncronos
NeverExpressão que nunca conclui a execução normalmente (usado para marcar funções que sempre lançam exceções)
dynamicDesativa a verificação estática de tipos; prefira usar Object / Object?
voidSem 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

  1. Literais adjacentes são concatenados automaticamente (mesmo com quebra de linha)
  2. 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

  1. Runes: expõe os pontos de código Unicode internos, solução antiga
  2. 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)

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *