Skip to content

Instantly share code, notes, and snippets.

@KelvinRonaldo
Last active November 15, 2024 20:48
Show Gist options
  • Select an option

  • Save KelvinRonaldo/35f676ac2c05a1b84ead6a339105bfec to your computer and use it in GitHub Desktop.

Select an option

Save KelvinRonaldo/35f676ac2c05a1b84ead6a339105bfec to your computer and use it in GitHub Desktop.
Basic use of Dart language
class Produto {
// Se não declarar como nullsafety(?) a variável precisará ser incializada
String? nome;
double? preco;
// Produto(String nome, double preco){
// this.nome = nome;
// this.preco = preco;
// }
/**
* Declarando método com parâmetros posicionais.
* A ordem na declaração do objeto deve obedecer a ordem declarada
* no construtor.
**/
// Produto(this.nome, this.preco);
/** Declarando método com parâmetros nomeados
* Na declaração de um objeto a ordem de envio dos argumentos
* não importa. Os parâmetros são enviado via seus nomes
**/
Produto ({this.nome, this.preco = 199.0}); // com valor padrão
}
main() {
print("Arrays ============");
/// 'var' é como o tipo 'auto' em C++
var nomes = ["Kelvin", "Ronaldo", "Silva"];
nomes.add("Marques");
print(nomes.length);
print(nomes.elementAt(2));
print(nomes[1]);
print(nomes.first);
print("Sets ============");
// Em um Set<> valores repetidos não contam
Set<int> conjunto = {0, 1, 2, 3, 4, 4, 4, 4};
print(conjunto.length);
print(conjunto is Set);
print("Map ============");
Map<String, double> notas = {
"Kelvin": 10,
"Ronaldo": 4,
"Silva": 3.4
};
for(var chave in notas.keys)
print("chave = ${chave}");
for(var valor in notas.values)
print("valor = ${valor}");
for(var registro in notas.entries)
print("${registro.key} = ${registro.value}");
print("Dynamic ============");
dynamic x = "Teste";
x = 123;
x = 43.5;
print("Constantes ============");
var a = 3;
a = 45;
final b = 3;
// b = 4; //can't
const c = 6;
// c = 4; // can't
print("Funções ============");
print("O valor da soma é ${soma(3, 4)}");
final ret = exec(6, 8, (a, b) => (a - b) + 32);
print("O resultado é $ret");
print("Classe ============");
// var p1 = new Produto('Celular', 2499.9);
// p1.nome = "Celular";
// p1.preco = 3454.99;
// print("O produto ${p1.nome} tem preço R\$${p1.preco}");
// var p2 = Produto('Geladeira', 2999.90); /// Não precisa do 'new'
// print("O produto ${p2.nome} tem preço R\$${p2.preco}");
var p3 = Produto(preco: 1599.90, nome: 'Sofá');
imprimirProduto(2, nome: p3.nome, preco: p3.preco);
var p4 = Produto(nome: 'Cadeira');
imprimirProduto(1, nome: p4.nome, preco: p4.preco);
}
// quando os parâmetros não tem tipo declarado
// automaticamente são do tipo dynamic
int soma(int a, int b) {
return a + b;
}
// É possível passar uma função como parâmetro de outra
int exec (int a, int b, int Function(int, int) fn){
return fn(a, b);
}
/// É possível misturar os tipos de parâmetros(posicional e nomeado)
void imprimirProduto(int qtde, {String? nome, double? preco}){
for(int i = 0; i < qtde; i++)
print("O produto ${nome} tem preço R\$${preco}");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment