Configuração de Ambiente Dart e Toolchain

O primeiro passo para escrever bom código é configurar um bom ambiente.

1. O que Você Aprenderá


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.

BASH
# Passo 1: Verificar instalação
dart --version

# Passo 2: Criar primeiro projeto
dart create hello_dart

# Passo 3: Executar
cd hello_dart && dart run
TEXT
> 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


3. Instalação do Dart SDK

(1) Métodos de Instalação por Plataforma

100%
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]
TEXT
> 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

TEXT
> 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

BASH
# Instalar via Chocolatey (executar como Administrador)
choco install dart-sdk

# Verificar instalação
dart --version
# Saída esperada: Dart SDK version: 3.x.x
TEXT
> 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

TEXT
> 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

BASH
# Instalar via Homebrew
brew tap dart-lang/dart
brew install dart

# Verificar instalação
dart --version
TEXT
> 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

TEXT
> 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)

BASH
# 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
TEXT
> 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:

BASH
# 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
TEXT
> 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

TEXT
> 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:

JSON
{
  "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.

BASH
# Executar um único arquivo
dart run bin/main.dart

# Executar um projeto (usando pubspec.yaml)
dart run
TEXT
> 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

TEXT
> 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

BASH
# Compilar para executável autônomo
dart compile exe bin/main.dart -o datapipeline

# Executar o executável
./datapipeline
TEXT
> 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.

BASH
# 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 .
TEXT
> 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.

BASH
# Analisar projeto atual
dart analyze

# Analisar com infos fatais
dart analyze --fatal-infos
TEXT
> 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

TEXT
> 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

BASH
# 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
TEXT
> 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

TEXT
> 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

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

TEXT
> 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

DART
// Primeiro programa Dart da Alice
void main() {
  print('Hello, Dart!');
  print('Welcome to DataPipeline project.');
}
TEXT
> 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:

TEXT
Hello, Dart!
Welcome to DataPipeline project.

▶ Exemplo

TEXT
> 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

DART
// 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)}');
  }
}
TEXT
> 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):

TEXT
Hello, Alice!
Additional args: [--verbose]

▶ Exemplo

TEXT
> 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

DART
// 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');
  }
}
TEXT
> 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

DART
// ============================================
// 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);
  }
}
TEXT
> 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):

TEXT
=== 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 dart não for encontrado após a instalação? R: Verifique se a variável de ambiente PATH inclui o diretório bin do Dart SDK. Use where dart no Windows, which dart no 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 run e dart compile exe? R: dart run usa compilação JIT para execução, ideal para desenvolvimento. dart compile exe compila 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.0 significa >=1.2.0 <2.0.0, permitindo upgrades minor e patch.

P: dart analyze mostra 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: Use console-simple para ferramentas CLI, package-simple para bibliotecas, e flutter-create para Flutter. Este tutorial usa console-simple.


📖 Resumo


📝 Exercícios

  1. Básico (Dificuldade ⭐): Instale o Dart SDK, execute dart --version para confirmar que a versão é ≥ 3.0.0, depois use dart create hello_dart para criar e executar seu primeiro projeto.
  2. Intermediário (Dificuldade ⭐⭐): Configure o launch.json do VS Code para executar programas Dart com a tecla F5 e tente definir breakpoints para depuração.
  3. Desafio (Dificuldade ⭐⭐⭐): Escreva uma ferramenta CLI usando o pacote args que suporte um parâmetro --count N, exibindo "Hello, DataPipeline!" N vezes, e compile-a em um executável com dart compile exe.

← Aula Anterior | Próxima Aula →

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%