Configuração de Ambiente Dart e Toolchain
O primeiro passo para escrever bom código é configurar um bom ambiente.
1. O que Você Aprenderá
- Instalando o Dart SDK (Windows / macOS / Linux) e configurando o PATH
- Configurando o VS Code com a extensão Dart e configurações do depurador
- Os quatro comandos core:
dart run/dart compile/dart format/dart analyze - Introdução ao
pubspec.yamle templates dodart create - O primeiro Hello World da Alice
2. A História Real de um Iniciante
(1) Dor: Configuração de Ambiente Desanima Novatos
Alice, uma desenvolvedora Python, acabou de começar a aprender Dart. Ela encontrou 5 tutoriais online, cada um recomendando um método de instalação diferente — alguns usando Homebrew, outros Chocolatey, outros download manual. Após lutar por 2 horas, dart --version ainda retorna "command not found". Ela quase desistiu antes de escrever uma única linha de código.
(2) A Solução Correta
Instalar o Dart SDK é na verdade apenas 3 passos: baixar → configurar PATH → verificar. Com a extensão Dart do VS Code, você pode ir da instalação à execução do primeiro programa em apenas 10 minutos.
# Passo 1: Verificar instalação
dart --version
# Passo 2: Criar primeiro projeto
dart create hello_dart
# Passo 3: Executar
cd hello_dart && dart run
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(3) Benefícios
- Do zero à execução em 10 minutos, sem mais travar na configuração de ambiente
- O VS Code fornece destaque de sintaxe, autocompletar inteligente e depuração com um clique
dart analyzeajuda você a encontrar problemas potenciais enquanto escreve código
3. Instalação do Dart SDK
(1) Métodos de Instalação por Plataforma
flowchart TD A[Baixar SDK] --> B[Configurar PATH] B --> C[VS Code + Extensão] C --> D[dart create] D --> E[dart run] E --> F[Hello World]
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
| Plataforma | Método Recomendado | Comando |
|---|---|---|
| Windows | Chocolatey | choco install dart-sdk |
| macOS | Homebrew | brew install dart |
| Linux (Debian) | APT | Veja comandos abaixo |
| Linux (Genérico) | Download Manual | Extrair + Configurar PATH |
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Instalação no Windows
# Instalar via Chocolatey (executar como Administrador)
choco install dart-sdk
# Verificar instalação
dart --version
# Saída esperada: Dart SDK version: 3.x.x
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Instalação no macOS
# Instalar via Homebrew
brew tap dart-lang/dart
brew install dart
# Verificar instalação
dart --version
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Instalação no Linux (Debian/Ubuntu)
# Adicionar repositório APT do Dart
sudo apt-get update
sudo apt-get install apt-transport-https
sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
# Instalar Dart SDK
sudo apt-get update
sudo apt-get install dart
# Verificar instalação
dart --version
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(2) Verificação da Configuração do PATH
Após a instalação, sempre verifique se o comando dart está acessível:
# Verificar se dart está no PATH
which dart # macOS/Linux
where dart # Windows
# Se não encontrado, adicione ao PATH manualmente
# macOS/Linux: adicione ao ~/.bashrc ou ~/.zshrc
export PATH="$PATH:/usr/lib/dart/bin"
# Windows: adicione o diretório bin do Dart SDK ao PATH do Sistema
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
| Item de Verificação | Comando | Resultado Esperado |
|---|---|---|
| Versão do SDK | dart --version |
Dart SDK version: 3.x.x |
| Verificação de Caminho | which dart |
/usr/lib/dart/bin/dart |
| Comando pub | pub --version |
Pub 3.x.x |
4. Configuração do VS Code
(1) Instalação de Extensões
| Extensão | Propósito | Obrigatória |
|---|---|---|
| Dart | Destaque de sintaxe, autocompletar, depuração | Sim |
| Flutter (Opcional) | Suporte ao desenvolvimento Flutter | Conforme necessário |
| Dart Import (Opcional) | Ordenação automática de imports | Recomendada |
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Configuração de Depuração do VS Code
Crie .vscode/launch.json na raiz do seu projeto:
{
"version": "0.2.0",
"configurations": [
{
"name": "Dart: Run",
"type": "dart",
"request": "launch",
"program": "bin/main.dart"
}
]
}
(2) Atalhos Comuns do VS Code
| Atalho | Função |
|---|---|
| F5 | Iniciar Depuração |
| Ctrl+F5 | Executar Sem Depuração |
| Ctrl+Shift+P → "Dart: Run" | Executar pela Paleta de Comandos |
| Ctrl+. | Correção Rápida |
| Ctrl+Space | Autocompletar Inteligente |
5. Quatro Comandos Core
(1) dart run
Executa diretamente um arquivo ou projeto Dart usando o modo JIT, suportando hot reload.
# Executar um único arquivo
dart run bin/main.dart
# Executar um projeto (usando pubspec.yaml)
dart run
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(2) dart compile
Compila código Dart em diferentes artefatos alvo.
| Subcomando | Artefato | Propósito |
|---|---|---|
dart compile exe |
Executável autônomo | Distribuição de ferramenta CLI |
dart compile js |
Arquivo JavaScript | Deploy web |
dart compile aot-snapshot |
Snapshot AOT | Runtime de alta performance |
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Compilar para Executável
# Compilar para executável autônomo
dart compile exe bin/main.dart -o datapipeline
# Executar o executável
./datapipeline
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(3) dart format
Formata código automaticamente, seguindo o guia de estilo oficial do Dart.
# Formatar todos os arquivos Dart no diretório atual
dart format .
# Formatar arquivo específico
dart format lib/main.dart
# Verificar formatação sem modificar arquivos
dart format --set-exit-if-changed .
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(4) dart analyze
Realiza análise estática no código para encontrar problemas potenciais.
# Analisar projeto atual
dart analyze
# Analisar com infos fatais
dart analyze --fatal-infos
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
| Comando | Propósito | Estágio de Desenvolvimento |
|---|---|---|
dart run |
Executar Código | Desenvolvimento |
dart compile |
Compilar Artefatos | Release |
dart format |
Formatar Código | Antes do Commit |
dart analyze |
Análise Estática | Contínuo |
6. pubspec.yaml e Templates de Projeto
(1) Criando Projetos com dart create
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Criar Projeto
# Criar aplicação console
dart create -t console-simple my_pipeline
# Estrutura do projeto
# my_pipeline/
# ├── bin/
# │ └── my_pipeline.dart # Ponto de entrada
# ├── lib/
# │ └── my_pipeline.dart # Código de biblioteca
# ├── test/
# │ └── my_pipeline_test.dart
# ├── pubspec.yaml # Dependências
# └── analysis_options.yaml # Regras de lint
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
(2) Estrutura do pubspec.yaml Explicada
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Configuração do pubspec.yaml
name: datapipeline
description: A CLI tool for e-commerce data analytics
version: 1.0.0
environment:
sdk: ^3.0.0
dependencies:
args: ^2.4.2
http: ^1.2.0
csv: ^6.0.0
dev_dependencies:
test: ^1.24.0
build_runner: ^2.4.0
| Campo | Significado | Exemplo |
|---|---|---|
name |
Nome do pacote | datapipeline |
environment |
Restrição de versão do SDK | sdk: ^3.0.0 |
dependencies |
Dependências de runtime | http: ^1.2.0 |
dev_dependencies |
Dependências de desenvolvimento | test: ^1.24.0 |
7. O Primeiro Hello World da Alice
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Hello World
// Primeiro programa Dart da Alice
void main() {
print('Hello, Dart!');
print('Welcome to DataPipeline project.');
}
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
Saída:
Hello, Dart!
Welcome to DataPipeline project.
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Hello World com Argumentos de Linha de Comando
// Hello World com argumentos de linha de comando
void main(List<String> arguments) {
final name = arguments.isNotEmpty ? arguments[0] : 'World';
print('Hello, $name!');
if (arguments.length > 1) {
print('Additional args: ${arguments.sublist(1)}');
}
}
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
Saída (usando
dart run bin/main.dart Alice --verbose):
Hello, Alice!
Additional args: [--verbose]
▶ Exemplo
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
: Usando o Pacote args para Análise de Argumentos
// Análise profissional de argumentos CLI com pacote args
import 'package:args/args.dart';
void main(List<String> arguments) {
final parser = ArgParser()
..addOption('name', abbr: 'n', defaultsTo: 'World', help: 'Your name')
..addFlag('verbose', abbr: 'v', defaultsTo: false, help: 'Show verbose output');
final results = parser.parse(arguments);
final name = results['name'] as String;
final verbose = results['verbose'] as bool;
print('Hello, $name!');
if (verbose) {
print('Running in verbose mode');
}
}
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
8. Exemplo Completo: Inicialização do Projeto DataPipeline
// ============================================
// DataPipeline CLI - Configuração Inicial
// Esqueleto de uma ferramenta CLI profissional
// ============================================
import 'package:args/args.dart';
const String version = '1.0.0';
void main(List<String> arguments) {
final parser = ArgParser()
..addFlag('version', abbr: 'v', negatable: false, help: 'Show version')
..addFlag('help', abbr: 'h', negatable: false, help: 'Show help')
..addOption('input', abbr: 'i', help: 'Input data source path')
..addOption('output', abbr: 'o', defaultsTo: 'report.json', help: 'Output file path')
..addOption('format', allowed: ['json', 'csv', 'html'], defaultsTo: 'json', help: 'Output format')
..addFlag('verbose', help: 'Enable verbose logging');
try {
final results = parser.parse(arguments);
if (results['help'] as bool) {
print('DataPipeline - E-commerce analytics CLI tool');
print(parser.usage);
return;
}
if (results['version'] as bool) {
print('DataPipeline v$version');
return;
}
final input = results['input'] as String?;
final output = results['output'] as String;
final format = results['format'] as String;
final verbose = results['verbose'] as bool;
if (input == null) {
print('Error: --input is required');
print(parser.usage);
return;
}
print('=== DataPipeline v$version ===');
if (verbose) {
print('Input: $input');
print('Output: $output');
print('Format: $format');
}
print('Processing data from: $input');
print('Report saved to: $output ($format format)');
} on FormatException catch (e) {
print('Error: ${e.message}');
print(parser.usage);
}
}
> Saída: Execute em um DartPad local ou com `dart run`. Todos os exemplos do curso Dart são baseados em Dart 3.x / Flutter 3.x. Os resultados podem variar ligeiramente com as versões do SDK.
Saída (usando
dart run bin/main.dart -i orders.csv -o report.json --verbose):
=== DataPipeline v1.0.0 ===
Input: orders.csv
Output: report.json
Format: json
Processing data from: orders.csv
Report saved to: report.json (json format)
❓ Perguntas Frequentes
P: O que fazer se o comando
dartnão for encontrado após a instalação? R: Verifique se a variável de ambiente PATH inclui o diretóriobindo Dart SDK. Usewhere dartno Windows,which dartno macOS/Linux para localizá-lo.
P: Preciso instalar o Flutter SDK? R: Se você está apenas aprendendo a linguagem Dart, não. Instale apenas o Dart SDK independente. Você pode instalar o Flutter SDK mais tarde quando começar a aprender Flutter (ele inclui o Dart SDK).
P: Qual a diferença entre
dart runedart compile exe? R:dart runusa compilação JIT para execução, ideal para desenvolvimento.dart compile execompila em um executável autônomo que pode rodar sem o SDK, ideal para distribuição.
P: Preciso instalar as extensões Dart e Flutter para o VS Code? R: A extensão Dart é obrigatória. A extensão Flutter só é necessária para desenvolvimento de apps Flutter, não para projetos Dart puros.
P: O que significa o símbolo
^no pubspec.yaml? R:^indica compatibilidade dentro da versão principal. Por exemplo,^1.2.0significa>=1.2.0 <2.0.0, permitindo upgrades minor e patch.
P:
dart analyzemostra muitos avisos de nível info. Preciso corrigir todos? R: Mensagens de nível info são sugestões e não afetam a execução. É recomendado corrigir warnings e errors. Mensagens info dependem das convenções da equipe.
P: Como escolher um template do
dart create? R: Useconsole-simplepara ferramentas CLI,package-simplepara bibliotecas, eflutter-createpara Flutter. Este tutorial usaconsole-simple.
📖 Resumo
- O Dart SDK suporta Windows, macOS e Linux. Usar um gerenciador de pacotes é recomendado.
- VS Code + extensão Dart é o melhor ambiente de desenvolvimento, oferecendo autocompletar, depuração e formatação integrados.
- Quatro comandos core:
dart run(executar),dart compile(compilar),dart format(formatar),dart analyze(analisar). pubspec.yamlé o centro de configuração do projeto, gerenciando dependências e metadados.dart createpode gerar templates de projeto rapidamente, e o pacoteargsé usado para análise de argumentos CLI.
📝 Exercícios
- Básico (Dificuldade ⭐): Instale o Dart SDK, execute
dart --versionpara confirmar que a versão é ≥ 3.0.0, depois usedart create hello_dartpara criar e executar seu primeiro projeto. - Intermediário (Dificuldade ⭐⭐): Configure o
launch.jsondo VS Code para executar programas Dart com a tecla F5 e tente definir breakpoints para depuração. - Desafio (Dificuldade ⭐⭐⭐): Escreva uma ferramenta CLI usando o pacote
argsque suporte um parâmetro--count N, exibindo "Hello, DataPipeline!" N vezes, e compile-a em um executável comdart compile exe.