Linguagem de Programação III
Sueli Pereira Perpétua
O que Flutter?
● Um framework de programação de aplicações móveis,
web e desktop
○ Foco inicial e principal no suporte a aplicações móveis
○ Gratuito
○ Código-fonte aberto
○ Hot reload
○ Hot restart
○ Utiliza a linguagem de programação Dart
Flutter - Arquitetura básica
● Três Camadas
○ Embedder
■ encarregada de adaptar a aplicação em Flutter
para se adequar a cada plataforma em particular
○ Engine
■ renderizar os widgets na tela, escrito
prioritariamente na linguagem C++
○ Framework
■ meio utilizado pelos desenvolvedores para
interagir com o Flutter
Flutter - Arquitetura básica
Flutter - Arquitetura básica
Flutter - Arquitetura básica
Visão Geral
● Diferente de C ou Java, Dart não possui tipos
primitivos.
○ Em Dart, 'tudo é objeto'.
○ Tipos como int, double, bool e String são classes.
○ Exemplo: int x = -5; print(x.abs());
Trabalhando com números
● Classe num e seus subtipos int e double:
○ num é mais genérico (pode ser int ou double)
○ int: inteiros
○ double: ponto flutuante
● Exemplo:
○ num n = 5.5;
○ int i = 10;
○ double d = 2.3;
Trabalhando com números
● Conversões permitidas:
○ num n = 10;
○ num n = 3.14;
○ int i = 3.14; // Erro
○ double d = n; // Erro se n for int
● Como int e double herdam de num não é possível
fazer variáveis do tipo int ou double receberem um
num.
○ Variáveis do tipo num podem receber um int ou double
Classe String
● Strings podem usar aspas simples ou duplas.
● Evita uso de caractere de escape.
● Métodos comuns:
○ toUpperCase()
○ toLowerCase()
○ length
○ substring(início, fim)
● Exemplo:
○ String nome = 'Ana';
○ print(nome.toUpperCase());
Classe bool
● Representa valores lógicos: true ou false.
● Usado em condições e estruturas de decisão.
● Exemplo:
○ bool aprovado = true;
○ if (aprovado) print('Parabéns!');
Classe dynamic
● Pode receber qualquer tipo de dado.
○ O tipo pode mudar em tempo de execução.
● Exemplo:
○ dynamic d = 10;
○ d = 'Pedro';
○ d = true;
● Atenção: perda de verificação estática de tipo.
Classe Function
● Em Dart, funções podem ser armazenadas em
variáveis.
● Funções também podem ser passadas como
parâmetros para outras funções.
● Isso permite comportamentos mais dinâmicos e
reutilizáveis.
Classe Function
void imprime(String s){ void main(){
print('O valor de s é $s'); Function funcao =
} imprime;
imprimeSoma(4,5,funcao);
imprimeSoma(int n1, int n2,
Function funcaoImpressao){ Function(int, int,
int soma = n1+n2; Function) f2 =
funcaoImpressao(soma.toString());
imprimeSoma;
}
f2(10,20,funcao);
}
Classe Function
● Função anônima:
● Uma função sem nome, que geralmente a atribui
a uma variável ou a passa diretamente como
parâmetro para outra função.
● Exemplo:
int somar(int a, int b) { var somar = (int a, int b) => a + b;
print(somar(3, 4));
return a + b;
}
Classe Function
var somar = (int a, int b) => a + b;
print(somar(3, 4));
Retorno da função
funções que retornam algo
Classe Function
● Parametrização de comportamentos
● Maior flexibilidade no código
● Facilidade para implementar callbacks e ações
personalizadas
● Muito útil em Flutter (eventos, navegação, etc.)