Olá, meu nome é Matheus, sou instrutor na Alura, e vou acompanhar você durante este curso.
Audiodescrição: Matheus Alberto é um homem de pele clara de cabelos curtos, lisos e castanho-escuros. Tem o rosto oval, sobrancelhas grossas com um corte vertical na sobrancelha direita. Tem olhos castanho-escuros, nariz e boca de tamanho médio. Está com uma camiseta preta. Ao fundo, os estúdios da Alura: uma parede lisa iluminada em tons de roxo e uma estante com livros, quadros e figuras de ação na temática geek.
Neste curso, desenvolveremos três projetos.
O primeiro projeto servirá para conhecer os fundamentos do Dart. Como inicializamos um projeto em Dart? Qual é o mínimo necessário para um projeto rodar?
Também criaremos interatividades com o terminal, enviando mensagens e capturando informações da pessoa usuária. Por exemplo, ao enviar o nome "Matheus", receberemos a seguinte mensagem de volta:
"Muito prazer, Matheus. Vamos fazer vários programas juntos!"
O segundo projeto será uma calculadora. Com ela, conheceremos:
Teremos uma calculadora na qual podemos inserir o primeiro valor, digitar uma operação, como, por exemplo, soma, e um segundo valor, obtendo o resultado dessa operação.
Com as condicionais, também lidaremos com erros. Por exemplo, se digitamos o primeiro valor corretamente, mas a operação for inválida, receberemos uma mensagem de erro, solicitando à pessoa usuária que insira uma nova operação válida.
Digitando a operação válida, prosseguiremos com a aplicação e obteremos o resultado.
No terceiro projeto, reuniremos todo o conhecimento que adquirimos até o momento em uma aplicação de notas. Nela, aprenderemos:
Como resultado, poderemos adicionar uma nota, listar notas ou sair da aplicação.
Para seguir com este curso, é muito importante ter conhecimentos básicos de lógica de programação.
Esperamos você na primeira aula!
Vamos começar o desenvolvimento com Dart. Neste curso, vamos desenvolver três projetos que ajudarão a entender melhor os fundamentos da linguagem Dart e, posteriormente, desenvolver aplicações com Flutter.
Para começar a desenvolver com Dart, é importante que o ambiente de desenvolvimento esteja configurado na sua máquina. Caso ainda não tenha feito isso, você pode acessar a atividade "Preparando o ambiente" e seguir os passos propostos.
Assim que tudo estiver configurado, pode retornar a este vídeo para gerar nosso primeiro projeto em Dart.
Após instalar o Dart na sua máquina, abriremos o terminal. Durante este curso, utilizaremos o terminal para configurar e gerar um projeto Dart.
Ao abrir o terminal, estaremos numa pasta chamada "home", independentemente de estarmos no Mac, Linux ou Windows - a menos que outra configuração tenha sido feita.
Para ver os conteúdos dessa pasta "home", utilizaremos um comando chamado ls
, que serve para listar as pastas dentro deste diretório.
ls
Retorno do terminal:
AndroidStudioProjects Music
Applications Pictures
Desktop Postman
Documents Public
Downloads StoreItemView.swift
Library StoresContainerView.swift
Movies ios-server-driven-swift-bank
Entre elas, tenho uma pasta chamada "Documents", onde vou gerar o projeto Dart.
No Windows, existem dois terminais que podemos utilizar: o terminal de comando, ou CMD, e o PowerShell. Recomendamos utilizar o PowerShell no Windows para seguir as informações deste curso. Para Linux e Mac, os comandos utilizados aqui serão os mesmos e não haverá diferença.
Para navegar até a pasta "Documents", digitaremos o seguinte comando no terminal:
cd Documents
O nome da pasta "Documents" pode estar em português ou em inglês. É muito importante escrever o nome dela exatamente como aparecer no terminal, respeitando letras maiúsculas minúsculas, porque o terminal é case sensitive (sensível a maiúsculas e minúsculas). Ou seja, as letras maiúsculas e minúsculas influenciam no terminal encontrar ou não algum arquivo ou diretório.
Dentro da pasta "Documents", digitaremos novamente ls
para ver o que há dentro dela.
3803-iOS-trabalhando-com-testes-de-unidade-no-app
3804-Andriu
Blockchain_Vinicius
TaskyApp
anybank
flutter
ios-chef-delivery-unit-test-mock-stub-84b225cc43892a978b3616c3e182074e62
72b44d
Dentro desse diretório, criaremos uma pasta chamada "dart" utilizando o comando abaixo:
mkdir dart
Para conferir a criação dessa pasta, rodaremos novamente o comando ls
.
Retorno do terminal:
3803-iOS-trabalhando-com-testes-de-unidade-no-app
3804-Andriu
Blockchain_Vinicius
TaskyApp
anybank
dart
flutter
ios-chef-delivery-unit-test-mock-stub-84b225cc43892a978b3616c3e182074e62
72b44d
Navegaremos até a pasta "dart" com cd dart
.
cd dart
Em seguida, rodaremos o comando ls
novamente para verificar que a nada será retornado e, portanto, a pasta "dart" está vazia, conforme esperado.
Vamos gerar primeiro projeto Dart. Para isso, digitaremos o seguinte comando:
dart create meu_app
Rodaremos o comando dart
para fazer qualquer coisa relacionada ao Dart. O comando create
é o nome da função que vai gerar algo - no caso, um projeto novo. Já meu_app
é o nome do aplicativo que estamos gerando, e poderia ser substituído por outro qualquer.
Pressionando "Enter", o comando gerará as pastas, informando que está rodando o pub get
, além de exibir outras informações na tela.
Assim que ele terminar de rodar, a parte inferior do terminal voltará a exibir o cursor da pasta em que estamos, assim como antes.
Entre as mensagens exibidas na tela, veremos a seguinte mensagem:
Created project meu_app in meu_app! In order to get started, run the following commands:
cd meu_app dart run
A mensagem informa que um projeto meu_app
foi criado na pasta "meu_app". Para começar, ele solicita que rodemos os comandos mencionados.
Com o comando cd meu_app
, ele está solicitando que naveguemos para a pasta "meu_app". Já o comando dart run
serve para executar e gerar o projeto em Dart.
Portanto, seguiremos essas recomendações, executando o cd meu_app
, e depois o dart run
.
Após o dart run
, o terminal exibirá uma mensagem informando que o executável está sendo construído. Depois de construí-lo, há outra mensagem:
Hello world: 42!
De onde surgiu essa mensagem e o número 42?
A partir daqui, utilizaremos uma IDE (ambiente de desenvolvimento integrado) para visualizar o projeto. Você pode usar qualquer IDE que quiser, mas neste curso, utilizaremos o Visual Studio Code.
O Instalador do Visual Studio seleciona um pacote de idiomas padrão para o Visual Studio que corresponde ao idioma do sistema operacional. Para modificar o idioma, acesse a seção "Modificar pacotes de idiomas" no site oficial do Visual Studio Code e siga as instruções.
Abrindo o Visual Studio Code, veremos a página de boas-vindas, sem nenhum projeto aberto. Acessaremos a barra de menus superior e clicaremos em "File > Open Folder" (ou "Arquivo > Abrir Pasta" em português).
Na janela exibida, clicaremos uma vez na pasta "meu_app" que criamos dentro do terminal, por meio do caminho "Documentos > Dart". Em seguida, no canto inferior direito, clicaremos no botão "Open" ("Abrir").
Após o clique, A IDE carregará o projeto. Na aba do explorador, na lateral esquerda, veremos a árvore de arquivos do projeto.
Não nos preocuparemos com as pastas neste momento. Focaremos em um arquivo específico que está dentro da pasta "bin", chamado meu_app.dart
.
Ao clicar nele, abriremos uma guia com seu conteúdo na área central da tela, chamada de editor de código. Fecharemos a aba lateral à esquerda com o "CTRL + B" (No Windows) para focar no arquivo.
Se estiver usando um Mac, basta substituir o "Ctrl" nos atalhos por "Command".
Dentro do arquivo, veremos uma linha de código com aquela mensagem "Hello World" e um número estranho aparecendo.
meu_app.dart
:
import 'package:meu_app/meu_app.dart' as meu_app;
void main(List<String> arguments) {
print('Hello world: ${meu_app.calculate()}!');
}
Limparemos esse arquivo para deixar o mínimo de código necessário para rodar um projeto Dart, sem os elementos gerados por padrão.
Primeiro, deletaremos a primeira linha, que tem um import
, e também a linha vazia abaixo dela. Na linha que tem void main()
e coisas dentro dos parênteses, não vamos precisar dessas coisas, portanto, deixaremos os parênteses vazios.
Após a abertura de chaves, na linha de baixo, temos uma função print()
. Apagaremos esse print()
para deixar essa linha vazia.
O resultado do código do arquivo ficou assim:
void main() {
}
Para um programa em Dart rodar, precisamos, essencialmente, desse void main
, um bloco de parênteses e outro de chaves. Isso é o mínimo que ele precisa para funcionar.
Agora, escreveremos nossa versão da mensagem "Hello World". Para isso, usaremos o comando print()
, que possui um bloco de parênteses.
Ao abrir parênteses, é possível que o Visual Studio Code os feche automaticamente.
Entre esses parênteses, adicionaremos entre aspas duplas um texto que queremos - por exemplo, o "Hello World" que existia antes. Por fim, no final dessa linha, precisamos colocar ponto e vírgula (;
).
void main() {
print("Hello World");
}
Salvaremos esse arquivo com "Ctrl + S" e veremos sua execução. Para isso, ao invés de ficar indo e voltando para a página do terminal, usaremos o terminal integrado do Visual Studio Code.
Para abrir o terminal integrado em uma aba abaixo do editor de código, pressionaremos "Control + J". Na barra de menus dessa aba, temos várias guias diferentes, e uma delas chama-se "Terminal".
Ao clicar nela, veremos que o terminal é o mesmo que usamos para gerar o projeto em Dart. Contudo, a vantagem deste é que já estará configurado na pasta "meu_app", sem a necessidade de navegar por "Documentos > Dart" e meu_app
. Ou seja, esse terminal abre diretamente a pasta na qual estamos trabalhando.
Nesse terminal, rodaremos o comando abaixo.
dart run
Esse comando fará uma build (compilação) do programa. Em seguida, nossa mensagem aparecerá em seu interior:
Hello World
No mundo real, não queremos apenas imprimir mensagens para a pessoa usuária. Também queremos que ela interaja com o teclado, seja inserindo informações de formulário, preenchendo um tipo de dado ou inserindo informações que solicitamos em programa, por exemplo.
Queremos que a pessoa usuária utilize o teclado para escrever e interagir com o programa. Para isso, precisamos usar uma ferramenta do Dart que vai fazer essa captura de informação.
Voltando ao Visual Studio Code, fecharemos o terminal que tínhamos deixado aberto com o comando "Ctrl + J". Voltando ao editor de código, no arquivo meu_app.dart
, acessaremos o final da linha que possui a função print()
, onde escrevemos a mensagem "Hello World".
Pressionando ""Enter"" para acessar a linha de baixo, ainda dentro dos parênteses do print()
, escreveremos o comando stdin
.
void main() {
print("Hello World");
stdin
}
O comando stdin
, por si só, não é suficiente para capturar alguma informação. Portanto, adicionaremos um ponto e chamar outra função chamada readLineSync()
.
Ela possui três palavras juntas, onde read
começa com R
minúsculo, Line
e Sync
com L
e S
maiúsculos. Essa prática de escrever palavras juntas com iniciais maiúsculas a partir da segunda palavra facilita a leitura do código e se chama Camel Case, porque cria a ilusão de corcovas de camelo.
Observação: Praticamente toda função do projeto terá um bloco de parênteses.
Após fechar os parênteses, podemos adicionar ponto e vírgula no final da linha.
void main() {
print("Hello World");
stdin.readLineSync();
}
Vamos salvar o arquivo com "Ctrl + S", abrir o terminal com "Ctrl + J" e rodar o comando dart run
.
Logo depois de enviar o comando, ele exibirá a mensagem "Hello World", mas não exibirá o caminho da pasta após rodar o programa, como no terminal padrão. Em vez disso, ele apenas posicionou o cursor na próxima linha.
Dessa forma, conseguimos digitar alguma coisa para o programa, como por exemplo um "Olá":
Olá
Somente após escrever a mensagem e pressionar "Enter", ele terminará a execução do programa e voltaremos ao terminal, exibindo o caminho da pasta.
Fecharemos o terminal para entender algumas coisas.
Mencionamos que o stdin
é uma ferramenta do próprio Dart para capturar informações de dados de uma pessoa usuária. Entretanto, no topo do arquivo, fizemos um import
, porque a ferramenta da IDE provavelmente vai fazer esse import
automaticamente.
Se ele fez um import
, significa que foi necessário colocar alguma coisa extra dentro do arquivo e do programa. No topo do arquivo, onde adicionamos todos os import
, existe agora um import 'dart:io'
.
import 'dart:io';
void main() {
print("Hello World");
stdin.readLineSync();
}
Apesar de mencionarmos que o stdin
é uma ferramenta nativa do próprio Dart, a verdade é que este possui muitas funcionalidades e ferramentas. Contudo, para não ficar tão pesado, ele foi dividido em várias partes.
Entre essas partes, temos o Dart Núcleo (core, em inglês), que possui as funções principais, como a main()
e a print()
. Como quisemos fazer uma coisa extra - a captura de entrada de pessoas usuárias -, tivemos que importar a ferramenta dart:io
do próprio Dart. IO significa "entrada e saída" (ou IN-OUT, em inglês).
Nesse momento, estamos coletando as informações da pessoa usuária, digitadas no teclado, quando ela executa o programa. Mas, para onde vai essa informação digitada?
Para lugar nenhum, na verdade. Estamos capturando e deixando ela sumir depois que o programa fecha.
Vamos guardar essa informação em algum lugar?
Para guardar a informação que a pessoa digita em algum lugar, podemos usar variáveis. Trata-se de um conceito no qual podemos guardar dados dentro do Dart.
Para criar uma variável, criaremos uma linha vazia abaixo do stdin
e acima do fechamento das chaves do main()
. Nela, escreveremos var
, espaço, e o nome da variável - que pode ser entrada
, por exemplo.
import 'dart:io';
void main() {
print("Hello World");
stdin.readLineSync();
var entrada
}
O editor apontará um erro nessa palavra, porque temos que atribuir algum valor a ela. Por ora, vamos entender como uma variável funciona, adicionando um sinal igual, que é o símbolo de atribuição e um par de aspas duplas.
Entre as aspas, escreveremos o texto "Uma mensagem". Por fim, temos que colocar ponto e vírgula no final da linha.
import 'dart:io';
void main() {
print("Hello World");
stdin.readLineSync();
var entrada = "Uma mensagem";
}
Salvaremos o arquivo com "Ctrl + S" e abriremos o terminal com "Ctrl + J" para rodar dart run
. Com isso, o terminal mostrará o "Hello World".
Hello World
Digitaremos alguma mensagem - por exemplo, "Olá" -, e pressionaremos "Enter".
Olá
Nossa mensagem não apareceu, porque não pedimos para ela ser impressa ainda. Então, vamos fechar o terminal com o "Ctrl + J".
Para imprimir, já vimos que temos que usar a função print()
. Portanto, pularemos mais uma linha para baixo da variável entrada
e escreveremos print()
adicionando entrada
entre os parênteses e ponto e vírgula no final da linha.
É importante nunca esquecer do ponto e vírgula para finalizar a linha de código.
import 'dart:io';
void main() {
print("Hello World");
stdin.readLineSync();
var entrada = "Uma mensagem";
print(entrada);
}
Salvaremos o arquivo, abriremos o terminal novamente e rodaremos dart run
. Após a mensagem "Hello World", escreveremos a mensagem "Olá", pressionaremos "Enter", e agora veremos a mensagem.
Uma mensagem
Com isso, conseguimos imprimir variáveis com a função de print()
.
Agora, imprimiremos o que a pessoa usuária digitou. Para isso, ao invés de colocar "Uma mensagem" na variável entrada
, adicionaremos uma mensagem que a pessoa usuária vai inserir.
Para adicionar essa mensagem, ao invés de colocar aspas duplas e escrever alguma coisa, escreveremos stdin.readLineSync()
e apagar o stdin.readLineSync()
da linha de cima.
import 'dart:io';
void main() {
print("Hello World");
var entrada = stdin.readLineSync();
print(entrada);
}
Manteremos o restante do programa como antes e salvaremos o arquivo.
Acessando o terminal, rodaremos novamente o comando dart run
. Após ver a mensagem "Hello World" e digitar a mensagem "Olá", ele imprimirá "Olá".
Olá
Vamos fazer algo mais divertido com isso? Conseguimos capturar a mensagem e mostrá-la na tela, mas o que conseguimos construir com essas informações?
Já entendemos como imprimir, capturar e salvar a mensagem em algum lugar, além de mostrá-la em uma variável. Agora, fecharemos o terminal e reescreveremos o programa.
Apagaremos tudo o que estava entre as chaves do main()
, e no lugar, escreveremos uma mensagem legal - como "Olá, me chamo Dart. Qual o seu nome?" - dentro de um print()
.
import 'dart:io';
void main() {
print("Olá, me chamo Dart. Qual o seu nome?");
}
Descendo uma linha, coletaremos a mensagem que a pessoa usuária vai digitar - o seu nome -, e escreveremos uma mensagem com esse nome.
Para isso, temos que capturar o que a pessoa digitou, criando uma var entrada
, o sinal de atribuição, e o stdin.readLineSync()
.
Não podemos esquecer do ponto e vírgula no final de cada linha.
import 'dart:io';
void main() {
print("Olá, me chamo Dart. Qual o seu nome?");
var entrada = stdin.readLineSync();
}
Na linha seguinte, imprimiremos outra mensagem com um print()
. Entre parênteses, escreveremos a mensagem "Muito prazer", vírgula, e o nome da pessoa.
Para escrever o nome da pessoa no meio do texto, usaremos uma técnica chamada interpolação, com a qual podemos utilizar variáveis dentro de strings (textos).
Para isso, ainda entre as aspas duplas, escreveremos um cifrão ($
), acompanhado da variável entrada
.
import 'dart:io';
void main() {
print("Olá, me chamo Dart. Qual o seu nome?");
var entrada = stdin.readLineSync();
`print("Muito prazer, $entrada")`;
}
Após $entrada
, podemos prosseguir escrevendo a mensagem entre as aspas duplas. Nesse caso, escreveremos um ponto e a frase "Vamos fazer vários programas juntos!".
import 'dart:io';
void main() {
print("Olá, me chamo Dart. Qual o seu nome?");
var entrada = stdin.readLineSync();
`print("Muito prazer, $entrada. Vamos fazer vários programas juntos!")`;
}
Salvaremos o arquivo, abriremos o terminal e rodaremos novamente o comando dart run
.
Como resultado, o programa falará:
Olá, me chamo Dart, qual o seu nome?
Digitaremos nosso nome na resposta - no meu caso, "Matheus".
Meu nome é Matheus
Como resposta, teremos:
Muito prazer, Matheus. Vamos fazer vários programas juntos!
Conseguimos criar essa interatividade utilizando o Dart, e é possível fazer muito mais.
Para saber o que mais o Dart consegue fazer, te esperamos na próxima aula.
O curso Dart: trabalhando com a sintaxe e configuração de projeto possui 138 minutos de vídeos, em um total de 69 atividades. Gostou? Conheça nossos outros cursos de Flutter em Mobile, ou leia nossos artigos de Mobile.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.