Last active
November 15, 2024 20:48
-
-
Save KelvinRonaldo/35f676ac2c05a1b84ead6a339105bfec to your computer and use it in GitHub Desktop.
Basic use of Dart language
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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