├── desafios ├── desafio_matriz │ ├── matriz.dart │ ├── pergunta.dart │ └── main.dart ├── desafio_ramon │ ├── exercicio_tres.dart │ ├── exercicio_um.dart │ └── exercicio_dois.dart ├── desafio_udemy │ ├── modelo │ │ ├── cliente.dart │ │ ├── produto.dart │ │ ├── venda.dart │ │ ├── venda_item.dart │ │ └── carro.dart │ └── teste │ │ ├── teste_carro.dart │ │ └── teste_venda.dart ├── desafio_anos │ └── main.dart ├── desafio_hackmd │ ├── exercicio_6.dart │ ├── exercicio_3.dart │ ├── exercicio_4.dart │ ├── exercicio_2.dart │ ├── metodo_read.dart │ ├── exercicio_10.dart │ ├── exercicio_13.dart │ ├── exercicio_1.dart │ ├── exercicio_5.dart │ ├── exercicio_12.dart │ ├── exercicio_14.dart │ ├── exercicio_11.dart │ ├── exercicio_16.dart │ ├── exercicio_7.dart │ ├── exercicio_9.dart │ ├── exercicio_15.dart │ └── exercicio_8.dart ├── desafio_mercado │ ├── funcoes.dart │ ├── produtos.dart │ └── main.dart ├── dasafio_elevador │ ├── .vscode │ │ └── launch.json │ ├── funcao.dart │ ├── elevador.dart │ ├── pessoa.dart │ └── main.dart ├── desafio_carros │ ├── teste │ │ └── teste_carro.dart │ └── modelo │ │ └── carro.dart ├── desafio_banco │ ├── conta_imposto.dart │ └── main.dart ├── desafio_futebol │ ├── main.dart │ └── jogador.dart └── outros │ ├── treino_avançado.dart │ ├── treino_basico.dart │ └── treino_intermediario.dart ├── cursos ├── exemplos_classes │ ├── pessoa.dart │ ├── importMain.dart │ ├── herançaExtends.dart │ ├── construtoresNomeados.dart │ ├── set.dart │ ├── get.dart │ ├── construtores.dart │ ├── classe_data2 copy.dart │ └── classe_data.dart ├── academia_do_flutter │ ├── poo │ │ ├── polimorfismo │ │ │ ├── medico.dart │ │ │ ├── obstreta.dart │ │ │ ├── pediatra.dart │ │ │ ├── anestesista.dart │ │ │ └── main.dart │ │ ├── mixins │ │ │ ├── cantar.dart │ │ │ ├── artista.dart │ │ │ ├── main.dart │ │ │ ├── joao.dart │ │ │ └── dancar.dart │ │ ├── construtores-3 │ │ │ ├── main.dart │ │ │ └── produto.dart │ │ ├── classes_const │ │ │ ├── main.dart │ │ │ └── casa.dart │ │ ├── construtores-2 │ │ │ ├── main.dart │ │ │ └── pessoa.dart │ │ ├── getters_setters │ │ │ ├── main.dart │ │ │ └── pessoa.dart │ │ ├── cascade_notation │ │ │ └── main.dart │ │ ├── heranca │ │ │ ├── animal.dart │ │ │ ├── main.dart │ │ │ └── cachorro.dart │ │ ├── interface │ │ │ ├── gol.dart │ │ │ ├── uno.dart │ │ │ ├── main.dart │ │ │ └── carro.dart │ │ ├── associacao │ │ │ └── pessoa.dart │ │ ├── conversões │ │ │ ├── curso.dart │ │ │ ├── aluno.dart │ │ │ ├── basica.dart │ │ │ └── json_aluno.dart │ │ ├── camiseta │ │ │ ├── camiseta_model.dart │ │ │ └── main.dart │ │ ├── ordenando_nomes │ │ │ ├── main.dart │ │ │ └── people.dart │ │ └── generico │ │ │ ├── main.dart │ │ │ └── presente.dart │ ├── funcoes_colecoes │ │ ├── funcao_anonima.dart │ │ ├── enuns.dart │ │ ├── lista_set.dart │ │ ├── referencia_memoria.dart │ │ ├── exceptions.dart │ │ ├── lista.dart │ │ ├── maps.dart │ │ └── desafio.dart │ ├── dart_async │ │ ├── event_loop.dart │ │ ├── async_await.dart │ │ ├── future_foreach.dart │ │ └── future_then.dart │ └── lista_manipuladores │ │ ├── loop_continue.dart │ │ ├── manipulacao_int.dart │ │ ├── iterables.dart │ │ ├── lista.dart │ │ ├── manipulacao_string.dart │ │ └── desafio_um.dart ├── exemplos_alura │ ├── aula1.dart │ ├── aula4.dart │ ├── aula5.dart │ ├── aula3.dart │ └── aula2.dart ├── exerc_normais │ ├── bool.dart │ ├── inteiros.dart │ ├── read.dart │ ├── string.dart │ ├── age.dart │ ├── repeti.dart │ ├── ex4.dart │ ├── poo.dart │ ├── exerc_estruturas.dart │ ├── ex6.dart │ ├── ex1.dart │ ├── ex5.dart │ ├── ex7.dart │ └── ex2.dart ├── condicionais │ ├── cond4_for.dart │ ├── cond.dart │ ├── break.dart │ ├── cond5tabua.dart │ ├── cond2.dart │ ├── cond3_bool.dart │ └── switch.dart ├── solid_cassio │ └── SOLID │ │ ├── S - Princípio da Responsabilidade Única │ │ └── srp.dart │ │ ├── I - Principio da Segregação de interfaces │ │ └── isp.dart │ │ ├── D - Principio da Inversão de Dependencias │ │ └── dip.dart │ │ ├── L - Principio da Substituição de Liskov │ │ └── lsp.dart │ │ └── O - Principio do Aberto-Fechado │ │ └── ocp.dart ├── masterclass │ └── copywith.dart └── abstract_factory │ └── bebida.dart ├── .vscode └── extensions.json ├── novos_conhecimentos ├── late.dart ├── propriedades.dart ├── listSet.dart ├── encode.dart ├── read.dart ├── continue.dart ├── matrix.dart ├── valorNulo.dart ├── Asserts.dart ├── function.dart ├── parametro1.dart ├── late2.dart ├── forMaps.dart ├── parametroNomeado.dart ├── funcaoParametro3.dart ├── for-in.dart ├── retorno_funcao.dart ├── otherFor.dart ├── queue.dart ├── parametroOpcional.dart ├── parametroDynamic.dart ├── functionParametro.dart ├── funcaoGeneric.dart ├── assert.dart ├── super.dart ├── switch.dart ├── constante.dart ├── tryEcatch.dart ├── clone_list.dart ├── streambuilder.dart ├── Operadores.dart ├── callback.dart ├── maps.dart ├── parametroRecebe.dart ├── as-is-is!.dart ├── functionUdemy.dart ├── lists1.dart ├── functionInsider.dart ├── funcaoParametro2.dart ├── receber_valor_classe.dart ├── reduce.dart ├── parametroObrigatorio.dart ├── functionFilter.dart ├── maps2.dart ├── operadorTernario.dart ├── mapsUdemy.dart ├── mapReduce.dart ├── basicClass.dart ├── function2.dart ├── enum.dart ├── map.dart ├── lists2.dart ├── functionFilter2.dart ├── Objetos1.dart └── basicClass2.dart ├── testes ├── without_value.dart ├── aula_um.dart ├── pergunta.dart ├── nulo.dart ├── parametros.dart ├── lista_vini.dart ├── other_lista.dart └── listas.dart └── dart-3 └── interface.dart /desafios/desafio_matriz/matriz.dart: -------------------------------------------------------------------------------- 1 | class Matrix{ 2 | 3 | } -------------------------------------------------------------------------------- /cursos/exemplos_classes/pessoa.dart: -------------------------------------------------------------------------------- 1 | class Pessoa{ 2 | String nome = ""; 3 | } -------------------------------------------------------------------------------- /desafios/desafio_ramon/exercicio_tres.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('object'); 3 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "bmalehorn.print-it" 4 | ] 5 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/polimorfismo/medico.dart: -------------------------------------------------------------------------------- 1 | abstract class Medico{ 2 | void operar(); 3 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/mixins/cantar.dart: -------------------------------------------------------------------------------- 1 | class Cantar{ 2 | String cantar(){ 3 | return 'cantando'; 4 | } 5 | } -------------------------------------------------------------------------------- /novos_conhecimentos/late.dart: -------------------------------------------------------------------------------- 1 | late double valorTotal; 2 | 3 | void main() { 4 | valorTotal = 1000; 5 | print(valorTotal); 6 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/funcao_anonima.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | () { 3 | print('Olá mundo'); 4 | }(); 5 | } 6 | -------------------------------------------------------------------------------- /cursos/exemplos_alura/aula1.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | for (int i = 0; i<5; i++){ 3 | print('hello ${i}'); 4 | 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/construtores-3/main.dart: -------------------------------------------------------------------------------- 1 | import 'produto.dart'; 2 | 3 | main(){ 4 | Produto(id: 1, nome: 'nome', preco: 0.0); 5 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/mixins/artista.dart: -------------------------------------------------------------------------------- 1 | abstract class Artista{ 2 | String habilidade(){ 3 | return 'Artista genérico'; 4 | } 5 | } -------------------------------------------------------------------------------- /novos_conhecimentos/propriedades.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var natan = 10; 3 | String str = natan.toString(); 4 | print(str == '10'); 5 | } 6 | -------------------------------------------------------------------------------- /cursos/exerc_normais/bool.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | String nome = 'D'; 3 | 4 | if(nome.contains('D')){ 5 | print('Ativo e diferente'); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/modelo/cliente.dart: -------------------------------------------------------------------------------- 1 | class Cliente { 2 | String? nome; 3 | String? cpf; 4 | 5 | Cliente({this.nome, this.cpf}); 6 | } 7 | -------------------------------------------------------------------------------- /novos_conhecimentos/listSet.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var times = {"vasco", "gremio", "santos"}; 3 | print(times is Set); 4 | print(times); 5 | } 6 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/classes_const/main.dart: -------------------------------------------------------------------------------- 1 | import 'casa.dart'; 2 | 3 | void main() { 4 | var casa = const Casa(janela: 'madeira', porta: 'madeira'); 5 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/mixins/main.dart: -------------------------------------------------------------------------------- 1 | import 'joao.dart'; 2 | 3 | void main(List args) { 4 | var joao = Joao(); 5 | print(joao.habilidade()); 6 | } -------------------------------------------------------------------------------- /novos_conhecimentos/encode.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | var encoded = json.encode([1, 2, { "a": null }]); 4 | var decoded = json.decode('["foo", { "bar": 499 }]'); -------------------------------------------------------------------------------- /novos_conhecimentos/read.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | main() { 4 | stdout.write("digite: "); 5 | String teste = stdin.readLineSync()!; 6 | print(teste); 7 | } 8 | -------------------------------------------------------------------------------- /desafios/desafio_anos/main.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | somaAnos(int anos, int mes, int dias) { 3 | var soma = anos * (365) + mes * (30) + dias; 4 | return soma; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /novos_conhecimentos/continue.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | for (int a = 0; a < 10; a++) { 3 | if (a % 2 == 0) { 4 | continue; 5 | } 6 | print(a); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /cursos/exemplos_alura/aula4.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | String texto = 'curso de Dart na alura deste'; 3 | int ano = 2013; 4 | 5 | print(texto); 6 | print('${texto} ${ano}'); 7 | } -------------------------------------------------------------------------------- /testes/without_value.dart: -------------------------------------------------------------------------------- 1 | void main(List args) { 2 | final value = 'natan valimc'; 3 | const value2 = 'gsassa'; 4 | 5 | 6 | // value = 'natan'; 7 | // value2 = 'natan'; 8 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/enuns.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | var cor = Cores.azul; 3 | print(cor); 4 | } 5 | 6 | enum Cores { 7 | azul, vermelho, verde, amarelo, branco, preto 8 | } -------------------------------------------------------------------------------- /cursos/exemplos_alura/aula5.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | var idade = 18; 3 | var pi = 3.14; 4 | dynamic texto = 'Eu tenho essa idade ${idade} e o numero pi é ${pi}'; 5 | 6 | print(texto); 7 | } -------------------------------------------------------------------------------- /novos_conhecimentos/matrix.dart: -------------------------------------------------------------------------------- 1 | // List test 2 | // for(num i = ...){ 3 | // test[i]... 4 | // (...) 5 | // for(num j = ...){ 6 | // test[i][j] = ... 7 | // } 8 | // } 9 | -------------------------------------------------------------------------------- /novos_conhecimentos/valorNulo.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var numero = getNumero(); 3 | 4 | numero ??= 100; 5 | print(numero); 6 | } 7 | 8 | int? getNumero() { 9 | return null; 10 | } 11 | -------------------------------------------------------------------------------- /novos_conhecimentos/Asserts.dart: -------------------------------------------------------------------------------- 1 | main(){ 2 | final url = "http://dart.com"; 3 | assert(url.contains("https"), "deve ter o https"); //O assert ele vai mostrar o erro, ele é um confirmador booleano. 4 | } 5 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/construtores-2/main.dart: -------------------------------------------------------------------------------- 1 | import 'pessoa.dart'; 2 | 3 | void main(){ 4 | var pessoa = Pessoa(name: 'Natan', idade: 21, sexo: 'Masc',); 5 | print(pessoa.name); 6 | 7 | 8 | 9 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/getters_setters/main.dart: -------------------------------------------------------------------------------- 1 | import 'pessoa.dart'; 2 | 3 | main(){ 4 | var pessoa = Pessoas(); 5 | pessoa.idade = 19; 6 | print(pessoa.idade); 7 | ;} 8 | 9 | 10 | -------------------------------------------------------------------------------- /cursos/exemplos_alura/aula3.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | double salario = 1250.50 * 2; 3 | 4 | print('meu salário atual é de: ${salario}'); 5 | 6 | double resultado = 50 / 3; 7 | 8 | print(resultado); 9 | } -------------------------------------------------------------------------------- /novos_conhecimentos/function.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | teste(); //Ele só puxa a função principal 3 | } 4 | 5 | void teste() { 6 | print('Meu nome é Natan'); 7 | var nome = "Ta certo"; 8 | print(nome); 9 | } 10 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametro1.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | criarLogin('natanvalimcardoso@hotmail.com', 'dart123'); 3 | } 4 | 5 | void criarLogin(String email, String password) { 6 | print('$email $password'); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/mixins/joao.dart: -------------------------------------------------------------------------------- 1 | import 'artista.dart'; 2 | import 'cantar.dart'; 3 | import 'dancar.dart'; 4 | 5 | class Joao extends Artista with Dancar{} //o mixin sempre fica entre o implement e o extend 6 | 7 | -------------------------------------------------------------------------------- /novos_conhecimentos/late2.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | late var resultado = teste(); //late 3 | print(resultado); 4 | 5 | print('função main'); 6 | } 7 | 8 | double teste(){ 9 | print("função teste"); 10 | return 0.0; 11 | } 12 | -------------------------------------------------------------------------------- /dart-3/interface.dart: -------------------------------------------------------------------------------- 1 | abstract interface class Pessoa{ 2 | Future updateProfile(String user, String id); 3 | Future sendProfilePicture(String id, String urlPicture); 4 | Future changePassword(Map data); 5 | } -------------------------------------------------------------------------------- /novos_conhecimentos/forMaps.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | Map notas = {'joao': 9.3, 'maria': 7.5, 'natan': 9.2}; 3 | 4 | for (var registro in notas.entries) { 5 | print("O ${registro.key} tirou a nota: ${registro.value}"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametroNomeado.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | pessoa(idade: 45, nome: "natan"); 3 | pessoa(nome: "joao", idade: 32); 4 | } 5 | 6 | pessoa({String? nome, int? idade}) { 7 | print("O nome da pessoa é: $nome e a sua idade é: $idade"); 8 | } 9 | -------------------------------------------------------------------------------- /novos_conhecimentos/funcaoParametro3.dart: -------------------------------------------------------------------------------- 1 | void executarPor(int qtde, Function(String) fn, String valor) { 2 | for (int i = 0; i < qtde; i++) { 3 | fn(valor); 4 | } 5 | } 6 | 7 | main() { 8 | executarPor(10, print, "Muito Legal"); 9 | } 10 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/classes_const/casa.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | class Casa { 3 | final String janela; 4 | final String porta; 5 | 6 | const Casa({required this.janela, required this.porta}); 7 | } 8 | -------------------------------------------------------------------------------- /cursos/condicionais/cond4_for.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | 3 | for (int contador = 0; contador <= 10; contador++){ 4 | print('O contador é ${contador}'); 5 | } 6 | } 7 | //aula 15/07/2021 8 | // for ( variavél ; condição ; o que vai fazer com essa variavel.) 9 | -------------------------------------------------------------------------------- /cursos/exerc_normais/inteiros.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | main() { 4 | 5 | print("digite um numero inteiro: "); 6 | var entrada = stdin.readLineSync(); 7 | int numero = int.parse(entrada!); 8 | 9 | 10 | print(numero + 3); 11 | } 12 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/polimorfismo/obstreta.dart: -------------------------------------------------------------------------------- 1 | import 'medico.dart'; 2 | 3 | class Obstetra extends Medico{ 4 | @override 5 | void operar() { 6 | print('Preparar os equipamentos'); 7 | //preparar 8 | // nascimento do bebe 9 | } 10 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/polimorfismo/pediatra.dart: -------------------------------------------------------------------------------- 1 | import 'medico.dart'; 2 | 3 | class Pediatra extends Medico{ 4 | @override 5 | void operar() { 6 | // Examinar a criança pos parto 7 | print('Examinar a criança pos parto'); 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /novos_conhecimentos/for-in.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var notas = [8.3, 8.1, 2.4, 4.5, 9.3, 5.3, 7.5]; 3 | var notasBoas = []; 4 | 5 | for (var nota in notas) { 6 | if (nota >= 7) { 7 | notasBoas.add(nota); 8 | } 9 | } 10 | print(notasBoas); 11 | } 12 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/construtores-2/pessoa.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | class Pessoa { 3 | String name; 4 | int idade; 5 | String sexo; 6 | 7 | Pessoa({required this.name, required this.idade, required this.sexo}); 8 | } 9 | -------------------------------------------------------------------------------- /novos_conhecimentos/retorno_funcao.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var peso = 23; 3 | var altura = 174.3; 4 | 5 | double imc = calcImc(peso, altura); 6 | print(imc); 7 | } 8 | 9 | 10 | 11 | double calcImc(int peso, double altura) { 12 | return peso / (altura * altura); 13 | } 14 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/polimorfismo/anestesista.dart: -------------------------------------------------------------------------------- 1 | import 'medico.dart'; 2 | 3 | class Anestesista extends Medico{ 4 | @override 5 | void operar() { 6 | print('Anestesiar a paciente'); 7 | //Anestesiar a paciente 8 | //preparar os equipamentes 9 | } 10 | } -------------------------------------------------------------------------------- /cursos/condicionais/cond.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('Teste das condicional.'); 3 | 4 | int idade = 18; 5 | 6 | if (idade >= 18) { 7 | print('Você é maior de idade pode entrar'); 8 | } 9 | else{ 10 | print('Você é menor de idade, não pode entrar!'); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /cursos/exemplos_alura/aula2.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int idade = 25; 3 | int idade_irmao = idade + 2; 4 | int idade_avo = (idade + idade_irmao) * 3; 5 | 6 | print('Eu tenho ${idade}'); 7 | print('Meu irmão tem ${idade_irmao}'); 8 | print('Meu avo tem ${idade_avo}'); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/importMain.dart: -------------------------------------------------------------------------------- 1 | import 'pessoa.dart'; // se estiver na mesma pasta só colocar assim. E caso esteja em, outra página digita: import '../nomedapasta/nomedoarquivo.dart'; 2 | main() { 3 | var p1 = Pessoa(); 4 | p1.nome = 'João'; 5 | print("O nome dele é: ${p1.nome}"); 6 | } 7 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/cascade_notation/main.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var produtos = [] 3 | ..add('frutas') 4 | ..add('chocolate') 5 | ..add('ameixa'); 6 | //* Com os 2 pontos é possivel fazer ações na mesma hora que está sendo criada a varivel, ou instanciando algo 7 | print(produtos); 8 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/heranca/animal.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | abstract class Animal { 3 | String? tamanho; 4 | int idade; 5 | Animal({ 6 | required this.idade, 7 | }); 8 | 9 | 10 | 11 | int calcularIdadeHumana(); 12 | } 13 | -------------------------------------------------------------------------------- /cursos/exerc_normais/read.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | stdout.write('Qual é o seu nome: '); 5 | var nome = stdin.readLineSync(); 6 | 7 | print(nome); 8 | } 9 | 10 | //stdout.write com o ln é paragrafo exemplo: stdout.writeln 11 | -------------------------------------------------------------------------------- /novos_conhecimentos/otherFor.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var notas = [ 3 | 9.5, 4 | 8.2, 5 | 8.3, 6 | 8.4, 7 | 8.5, 8 | ]; 9 | 10 | for (var nota in notas) { 11 | // a cada repetição o nota armazena um valor de notas. 12 | print("As notas são: $nota"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/dart_async/event_loop.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | void main() { 4 | print('Inicio'); 5 | scheduleMicrotask(() => print('MicroTask')); 6 | Future.delayed(Duration(seconds: 2), ()=> print('Delayed #1')); 7 | Future(()=> print('Future #2')); 8 | print('Fim'); 9 | } // Estou na parte 2 -------------------------------------------------------------------------------- /cursos/exerc_normais/string.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | stdout.write('Qual é o seu nome: '); // Escreva 5 | var nome = stdin.readLineSync(); //Leia 6 | print(nome); 7 | 8 | } //stdout.write com o ln é paragrafo exemplo: stdout.writeln 9 | 10 | -------------------------------------------------------------------------------- /cursos/condicionais/break.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int contador = 0; 3 | 4 | for (;;) { 5 | contador++; 6 | print('O valor do contador é $contador'); 7 | 8 | if (contador == 123) { 9 | print('Atingi o valor 123'); 10 | break; 11 | } 12 | } 13 | } 14 | 15 | //curso alura 16/07/2021 16 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/modelo/produto.dart: -------------------------------------------------------------------------------- 1 | class Produto { 2 | int? codigo; 3 | String? nome; 4 | double? preco; 5 | double? desconto; 6 | 7 | Produto({this.codigo, this.nome, this.preco, this.desconto = 0}); 8 | 9 | double get precoComDesconto { 10 | return (1 - desconto!) * preco!; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/loop_continue.dart: -------------------------------------------------------------------------------- 1 | var nomes = [ 'João', 'Maria', 'José', 'Diana']; 2 | 3 | void main() { 4 | for (var nome in nomes) { 5 | if(nome == 'João'){ 6 | continue; // o continue pula o loop mesmo dentro do if. 7 | } 8 | print(nome); //Maria, José, Diana 9 | } 10 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/construtores-3/produto.dart: -------------------------------------------------------------------------------- 1 | class Produto{ 2 | final int _id; // forma para passar privado 3 | final String nome; 4 | final double preco; 5 | 6 | Produto({required id, required this.nome, required this.preco}) : _id = id{ // Associação de valores ao construtor 7 | print(_id); 8 | } 9 | } -------------------------------------------------------------------------------- /novos_conhecimentos/queue.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | void main (){ 4 | Queue q = new Queue(); 5 | 6 | q.add(1); 7 | q.add(2); //tipo de lista valor 8 | q.add(3); 9 | q.add(4); 10 | q.add(5); 11 | 12 | print(q); 13 | 14 | q.addFirst(23); 15 | q.addLast(90); 16 | 17 | print(q); 18 | } 19 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/interface/gol.dart: -------------------------------------------------------------------------------- 1 | import 'carro.dart'; 2 | 3 | class Gol implements Carro { 4 | @override 5 | String motor = '2.0'; 6 | 7 | @override 8 | int portas = 4; 9 | 10 | @override 11 | int rodas = 4; 12 | 13 | @override 14 | int velocidadeMaxima() { 15 | return 100; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/interface/uno.dart: -------------------------------------------------------------------------------- 1 | import 'carro.dart'; 2 | 3 | class Uno implements Carro { 4 | @override 5 | String motor = '3.0'; 6 | 7 | @override 8 | int portas = 6; 9 | 10 | @override 11 | int rodas = 4; 12 | 13 | @override 14 | int velocidadeMaxima() { 15 | return 130; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametroOpcional.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | criarLogin('natanvalimcardoso@hotmail.com'); // so o email. 3 | } 4 | 5 | void criarLogin(String email, [String? password]) { //coloca ? para nulo. 6 | print('$email "-----" ${password == null ? '123456' : password}'); // pra receber um numero caso o password seja nulo. 7 | } 8 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametroDynamic.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | juntar(1, 9); 3 | juntar('bom ', 'dia!!!'); 4 | var resultado = juntar('o valor de PI é: ', 3.1415); 5 | print(resultado.toUpperCase()); 6 | } 7 | 8 | dynamic juntar(dynamic a, b) { 9 | print(a.toString() + b.toString()); 10 | return a.toString() + b.toString(); 11 | } 12 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/herançaExtends.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var pitbul = Cachorro(); 3 | pitbul.peso = 40; 4 | 5 | var siames = Gato(); 6 | siames.peso = 12; 7 | } 8 | 9 | class Animal { 10 | String? nome; 11 | int? peso; 12 | int? tamanho; 13 | } 14 | 15 | class Cachorro extends Animal {} 16 | 17 | class Gato extends Animal {} 18 | -------------------------------------------------------------------------------- /novos_conhecimentos/functionParametro.dart: -------------------------------------------------------------------------------- 1 | void printElementName(int element) => 2 | print(element); // aquile ele iterou o valor ex: [1, 2, 3] e ex: 1 3 | void calcularElementName(int element) => printElementName(element * 2); //2 4 | //3 5 | 6 | void main() { 7 | var list = [1, 2, 3]; 8 | list.forEach(calcularElementName); 9 | } 10 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/construtoresNomeados.dart: -------------------------------------------------------------------------------- 1 | class Data { 2 | late int dia; 3 | late int mes; 4 | late int anos; 5 | 6 | Data({int? dia, int? mes, int? anos}) { 7 | print("$dia: $mes: $anos"); 8 | } //usa a chaves no parâmetro pra mostrar que 9 | 10 | } 11 | 12 | main() { 13 | Data(anos: 2001,dia: 25,mes: 4,); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/funcaoGeneric.dart: -------------------------------------------------------------------------------- 1 | Object segundoElementoV1(List lista) { 2 | return lista.length >= 2 ? lista[1] : null; 3 | } 4 | 5 | /*E segundoElementoV2(List lista) { 6 | return lista.length.t >= 4 ? lista[3] : null; 7 | } 8 | */ 9 | main() { 10 | var lista = [3, 6, 7, 12, 45, 78, 1]; 11 | print(segundoElementoV1(lista)); 12 | } 13 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_6.dart: -------------------------------------------------------------------------------- 1 | // Peça ao usuário uma string e imprima se esta string é um palíndromo ou não. 2 | // Um palíndromo é uma string que lê o mesmo para frente e para trás. 3 | 4 | import 'metodo_read.dart'; 5 | 6 | main(){ 7 | print('Escreva uma palavra: '); 8 | String word = pergunta(''); 9 | print(word.split('').reversed); 10 | } -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_3.dart: -------------------------------------------------------------------------------- 1 | // Pegue uma lista, digamos, por exemplo, esta: 2 | // lista = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 4]; 3 | // e escreva um programa que imprima todos os elementos da lista que são menores que 5. 4 | 5 | main(){ 6 | List lista = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 4]; 7 | print(lista.where((element) => element < 5)); 8 | } -------------------------------------------------------------------------------- /novos_conhecimentos/assert.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var urlString = 'https://api.github.com/users/flutter'; 3 | assert ( urlString . startsWith ( 'https' ), 'URL $urlString deve começar com "https".' );; // O assert é uma função que verifica se a condição é verdadeira. Se não for, ele lança uma exceção. 4 | print ( 'URL $urlString é válida.' ); 5 | } 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /novos_conhecimentos/super.dart: -------------------------------------------------------------------------------- 1 | class Foo { 2 | Foo(int a, int b) { 3 | //Code of constructor 4 | } 5 | 6 | Foo.named(int c, int d) { 7 | //Code of named constructor 8 | } 9 | } 10 | 11 | class Bar extends Foo { 12 | Bar(int a, int b) : super(a, b); 13 | } 14 | 15 | class Baz extends Foo { 16 | Baz(int c, int d) : super.named(c, d); 17 | } 18 | -------------------------------------------------------------------------------- /novos_conhecimentos/switch.dart: -------------------------------------------------------------------------------- 1 | void main (){ 2 | int x = 2; 3 | 4 | switch(x){ 5 | case 0: 6 | print('0'); 7 | break; 8 | case 1: 9 | print('1'); 10 | break; 11 | case 2: 12 | print('2'); 13 | break; 14 | case 3: 15 | print('3'); 16 | break; 17 | case 4: 18 | print('4'); 19 | break; 20 | } 21 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/heranca/main.dart: -------------------------------------------------------------------------------- 1 | import 'cachorro.dart'; 2 | 3 | main(){ 4 | var cachorro = Cachorro(idade: 10); 5 | cachorro.tamanho = 'pequeno'; 6 | 7 | print(''' 8 | Tamanho do cachorro: ${cachorro.tamanho} 9 | Idade do cachorro: ${cachorro.idade} 10 | Idade do cachorro em anos humanos: ${cachorro.calcularIdadeHumana()} 11 | '''); 12 | 13 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/associacao/pessoa.dart: -------------------------------------------------------------------------------- 1 | class Pessoa{ 2 | String? nome; 3 | Endereco endereco = Endereco(); //* COMPOSIÇÃO: Não pode ser nula, quando um atributo de associação é obrigatório ex: uma pessoa não pode existir sem um endereço 4 | Telefone? telefone;//* AGREGAÇÃO: Quando um atributo de associação não é obrigatorio 5 | } 6 | 7 | class Endereco{} 8 | class Telefone{} -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/conversões/curso.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | 3 | class Curso { 4 | String nome; 5 | String descricao; 6 | 7 | Curso({ 8 | required this.nome, 9 | required this.descricao, 10 | }); 11 | 12 | @override 13 | String toString() => 'Curso(nome: $nome, descricao: $descricao)'; 14 | } 15 | -------------------------------------------------------------------------------- /novos_conhecimentos/constante.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final lista = ["maça", "uva", "mamao"]; 3 | 4 | lista 5 | .add("limao"); //só com propriedades para adicionar algo em uma constante. 6 | print(lista); 7 | 8 | // Mas caso eu queira deixar um valor que não possa ser alterado?? 9 | 10 | final lista2 = const ["aviao", "carro", "moto"]; 11 | print(lista2); 12 | } 13 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/camiseta/camiseta_model.dart: -------------------------------------------------------------------------------- 1 | class Camiseta { 2 | // Atributos 3 | String? tamanho; 4 | String? cor; 5 | String? marca; 6 | 7 | // Métodos 8 | 9 | String tipoLavagem() { 10 | if (marca == 'Nike') { 11 | return ('Não pode lavar na maquina'); 12 | } else { 13 | return ('Pode lavar na maquina'); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_4.dart: -------------------------------------------------------------------------------- 1 | // Crie um programa que solicite um número ao usuário 2 | // e imprima uma lista de todos os divisores desse número. 3 | import 'metodo_read.dart'; 4 | 5 | main(){ 6 | print('Digite um número:'); 7 | var numero = pergunta(0); 8 | 9 | for (var i = 1; i <= numero; i++) { 10 | if (numero % i == 0) { 11 | print(i); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/conversões/aluno.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | import 'curso.dart'; 3 | 4 | class Aluno { 5 | String nome; 6 | List cursos; 7 | 8 | Aluno({ 9 | required this.nome, 10 | required this.cursos, 11 | }); 12 | 13 | @override 14 | String toString() => 'Aluno(nome: $nome, cursos: $cursos)'; 15 | } 16 | -------------------------------------------------------------------------------- /cursos/condicionais/cond5tabua.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | for (int multiplicando = 1; multiplicando <= 10; multiplicando++) { 3 | print('Tabuada de $multiplicando'); 4 | 5 | for (int contador = 1; contador <= 10; contador++) { 6 | print('$multiplicando * $contador = ${multiplicando * contador}'); 7 | } 8 | } 9 | } 10 | //aula 15/07/2021 11 | ///Se tiver com chaves ele imprimi primeiro!! -------------------------------------------------------------------------------- /desafios/desafio_udemy/modelo/venda.dart: -------------------------------------------------------------------------------- 1 | import './cliente.dart'; 2 | import './venda_item.dart'; 3 | 4 | class Venda { 5 | Cliente? cliente; 6 | List itens; 7 | 8 | Venda({this.cliente, this.itens = const []}); 9 | 10 | double get valorTotal { 11 | return itens 12 | .map((item) => item.preco * item.quantidade) 13 | .reduce((t, a) => t + a); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/tryEcatch.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | dynamic num1 = "natan"; 3 | int num2 = 6; 4 | 5 | try { 6 | print(num1 / num2); 7 | } catch (error) { //Usado para evitar erros!! è um IF & ELSe para bugs. 8 | print('caiu no error'); 9 | }finally{ 10 | print("Erro aqui"); //Usado para todo comando ser executado sempre sem um try independente. 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/lista_set.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var lista = [1, 2, 3, 4, 5, 3, 2, 1, 2]; 3 | var listaSet = {1, 2, 3, 4, 5, 3, 2, 1, 2}; 4 | var listaPessoas = {'João', 'Maria', 'José', 'José', 'Maria', 'João', 'diana'}; 5 | print(listaSet); 6 | print(lista.toSet()); // converte para set 7 | 8 | print(listaPessoas.lookup('João')); // retorna o indice do elemento 9 | } 10 | -------------------------------------------------------------------------------- /cursos/condicionais/cond2.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int idade = 290; 3 | 4 | if (idade < 150) { 5 | print('A pessoa é pequena'); 6 | } else if (idade >= 150 && idade < 175) { 7 | print('A altura está na média!'); 8 | } else if (idade >= 175 && idade < 195) { 9 | print('Você é grande!'); 10 | } else { 11 | print('Você é enorme!!!'); 12 | } 13 | } 14 | 15 | //aula sobre if e else. 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/clone_list.dart: -------------------------------------------------------------------------------- 1 | // Há varias maneneiras de clonar uma lista, porém a mais elegante é a seguinte: 2 | //O destruction é a forma mais simples de clonar uma lista em Dart. inclusive essa mesma estrategia 3 | // pode ser usado em Maps e Sets. 4 | main(){ 5 | var listNumeros = [1, 2, 3]; 6 | var listClone = [...listNumeros]; //Lembrando que existe com from, addall... 7 | print(listClone); 8 | } 9 | -------------------------------------------------------------------------------- /testes/aula_um.dart: -------------------------------------------------------------------------------- 1 | import 'nulo.dart'; 2 | import 'pergunta.dart'; 3 | //teste 4 | main() { 5 | print('Digite um nome: '); 6 | String nome = pergunta(''); 7 | 8 | print('Digite uma idade: '); 9 | int idade = pergunta(0); 10 | 11 | final pessoa = Pessoa(nome: nome, idade: idade, roupas: []); 12 | 13 | print('A pessoa que você digitou é maior de idade ${pessoa.maiorIdade(idade)} '); 14 | } 15 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/mixins/dancar.dart: -------------------------------------------------------------------------------- 1 | import 'artista.dart'; 2 | 3 | mixin Dancar on Artista{ //* Caso eu precise fazer uma condição coloco a palavra reservada MIXIN 4 | 5 | String dancar(){ 6 | return 'Tocando a música'; 7 | } 8 | 9 | } //O on é uma condição que deve ser satisfeita para que a classe seja herdada. ou seja 10 | // pra você herdar a classe Dancar, você deve ter a classe Artista. -------------------------------------------------------------------------------- /cursos/exerc_normais/age.dart: -------------------------------------------------------------------------------- 1 | // import 'dart:io'; 2 | 3 | // void main() { 4 | // stdout.write("What's your name? "); 5 | // String name = stdin.readLineSync(); 6 | 7 | // print("Hi, $name! What is your age?"); 8 | // int age = int.parse(stdin.readLineSync()); 9 | 10 | // int yearsToHunderd = 100 - age; 11 | // print("$name, You have $yearsToHunderd years to be 100"); 12 | // } 13 | -------------------------------------------------------------------------------- /novos_conhecimentos/streambuilder.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | int i = 0; 3 | main(){ 4 | Stream count() async*{ //o async* é um operador que retorna um Stream e não um Future 5 | for(int i = 0; i < 10; i++){ 6 | yield i; //o yield é um operador que retorna um valor do Stream e diferente do return, não retorna um Future 7 | 8 | } 9 | } 10 | print(i); 11 | print('start'); 12 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/ordenando_nomes/main.dart: -------------------------------------------------------------------------------- 1 | import 'people.dart'; 2 | 3 | void main() { 4 | var people = People(nome: 'Natan', telefone: '48991749818'); 5 | var people2 = People(nome: 'Ana', telefone: '51991749818'); 6 | var people3 = People(nome: 'Bruno', telefone: '11991749818'); 7 | 8 | var listPeople = [people, people2, people3]; 9 | listPeople.sort(); 10 | print(listPeople); 11 | } 12 | -------------------------------------------------------------------------------- /novos_conhecimentos/Operadores.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | dynamic numero = 10; 3 | 4 | numero = numero + 10; 5 | numero += 10; //melhor 6 | 7 | numero = numero - 10; 8 | numero -= 10; //melhor 9 | 10 | numero = numero * 10; 11 | numero *= 10; //melhor 12 | 13 | numero = numero / 10; 14 | numero /= 10; //melhor 15 | 16 | numero = numero % 10; 17 | numero %= 10; //melhor 18 | 19 | print(numero); 20 | } 21 | -------------------------------------------------------------------------------- /novos_conhecimentos/callback.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | List arrayTestForEach = [1, 2, 3, 4, 5]; 3 | 4 | callbackForEach(elem, index, arr) { 5 | //teste 6 | return (arr[index] = elem * 2); 7 | } 8 | 9 | newForEach(value) { 10 | value = arrayTestForEach; 11 | 12 | for (int i = 0; i < arrayTestForEach.length; i++) { 13 | print(value); 14 | } 15 | } 16 | 17 | var valor = newForEach(''); 18 | print(valor); 19 | } 20 | -------------------------------------------------------------------------------- /novos_conhecimentos/maps.dart: -------------------------------------------------------------------------------- 1 | 2 | void main(){ 3 | var teste = {'key1':345, 'key2':'testando'}; 4 | 5 | teste ['key3'] = 15; //pode adicionar chaves novas fora da variavel 6 | 7 | print(teste); 8 | print(teste['key1']); // PRINTA os maps de forma singular mas somente o valor. 9 | 10 | print('------------------'); 11 | 12 | teste.forEach((key, value) => print('$key and $value')); //Mostra todos maps Junto ( NOME E VALOR)! 13 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/polimorfismo/main.dart: -------------------------------------------------------------------------------- 1 | import 'anestesista.dart'; 2 | import 'medico.dart'; 3 | import 'obstreta.dart'; 4 | import 'pediatra.dart'; 5 | 6 | void main() { 7 | 8 | //* Médicos necessários em um parto 9 | var medicos = [ 10 | Anestesista(), 11 | Pediatra(), 12 | Obstetra(), 13 | ]; 14 | 15 | //* Realizar um parto 16 | for (var medico in medicos) { 17 | medico.operar(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_2.dart: -------------------------------------------------------------------------------- 1 | // Peça ao usuário um número. Dependendo se o número é par ou ímpar, 2 | // imprima uma mensagem apropriada para o usuário. 3 | import 'metodo_read.dart'; 4 | 5 | main() { 6 | print('Digite o número'); 7 | int valor = pergunta(0); 8 | 9 | String message = 'O número $valor é '; 10 | 11 | if (valor % 2 == 0) { 12 | print(message + 'par'); 13 | } else { 14 | print(message + 'impar'); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametroRecebe.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | void main() { 4 | int resultado = somar(2, 3); 5 | int somador = somarAleatorio(); 6 | resultado *= 2; 7 | 8 | print("o dobro do resultado é: $resultado"); 9 | print(somador); 10 | } 11 | 12 | int somar(int a, int b) { 13 | return a + b; 14 | } 15 | 16 | int somarAleatorio() { 17 | int a = Random().nextInt(11); 18 | int b = Random().nextInt(11); 19 | return a + b; 20 | } 21 | -------------------------------------------------------------------------------- /testes/pergunta.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | pergunta(Object valor) { 4 | var entrada = stdin.readLineSync(); 5 | if (valor is int) { 6 | int chamado = int.parse(entrada!); 7 | valor = chamado; 8 | } else if (valor is double) { 9 | double chamado = double.parse(entrada!); 10 | valor = chamado; 11 | } else if (valor is String) { 12 | String chamado = (entrada!).toString(); 13 | valor = chamado; 14 | } 15 | return valor; 16 | } -------------------------------------------------------------------------------- /cursos/exerc_normais/repeti.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int contador = 0; 3 | 4 | while (contador != 10) { 5 | print('O valor do contador é de ${contador}'); // Aqui ele começa o ciclo antes! 6 | contador++; 7 | } 8 | 9 | //ou 10 | 11 | do { 12 | print('O valor do contador é de ${contador}'); 13 | contador++; // Aqui ele começa o ciclo depois! 14 | } while (contador != 10); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /cursos/condicionais/cond3_bool.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int idade = 25; 3 | 4 | bool maior_idade = idade >= 18; 5 | bool acompanhado = true; // exemplo boleana somente um exemplo! 6 | 7 | if (maior_idade) { 8 | print('Você pode entrar!'); 9 | } else { 10 | if (acompanhado == true) { 11 | print('Mas está acompanhado, pode entrar!'); 12 | } else { 13 | print('Você não pode entrarr!'); 14 | } 15 | } 16 | } 17 | //aula 15/07/2021 18 | -------------------------------------------------------------------------------- /desafios/desafio_matriz/pergunta.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | pergunta(Object valor) { 4 | var entrada = stdin.readLineSync(); 5 | if (valor is int) { 6 | int chamado = int.parse(entrada!); 7 | valor = chamado; 8 | } else if (valor is double) { 9 | double chamado = double.parse(entrada!); 10 | valor = chamado; 11 | } else if (valor is String) { 12 | String chamado = (entrada!).toString(); 13 | valor = chamado; 14 | } 15 | return valor; 16 | } -------------------------------------------------------------------------------- /desafios/desafio_mercado/funcoes.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | pergunta(Object valor) { 4 | var entrada = stdin.readLineSync(); 5 | if (valor is int) { 6 | int chamado = int.parse(entrada!); 7 | valor = chamado; 8 | } else if (valor is double) { 9 | double chamado = double.parse(entrada!); 10 | valor = chamado; 11 | } else if (valor is String) { 12 | String chamado = (entrada!).toString(); 13 | valor = chamado; 14 | } 15 | return valor; 16 | } -------------------------------------------------------------------------------- /novos_conhecimentos/as-is-is!.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int numero = 1; 3 | 4 | print(numero is! int); // false 5 | print(numero is! num); //false 6 | print(numero is! double); //true 7 | 8 | print(numero is int); // true 9 | print(numero is num); //true 10 | print(numero is double); //false 11 | 12 | dynamic produto = Produto(); 13 | print(produto as Produto); // estudar o as no dart! (more) 14 | } 15 | 16 | class Produto { 17 | var nome = "natan"; 18 | } 19 | -------------------------------------------------------------------------------- /novos_conhecimentos/functionUdemy.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | void main() { 4 | soma(2, 3); 5 | /////////// 6 | /// 7 | int c = 4; 8 | int d = 4; 9 | soma(c, d); 10 | 11 | somaDoisNumero(); 12 | } 13 | 14 | void soma(int a, int b) { 15 | print(a + b); 16 | } 17 | 18 | void somaDoisNumero() { 19 | int n1 = Random().nextInt(11); 20 | int n2 = Random().nextInt(11); 21 | print("Os valores sorteados foram ${n1} e ${n2}"); 22 | print(n1 + n2); 23 | } 24 | -------------------------------------------------------------------------------- /desafios/desafio_ramon/exercicio_um.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final morningNotification = 51; 3 | final eveningNotification = 135; 4 | 5 | printNotificationSummary(morningNotification); 6 | printNotificationSummary(eveningNotification); 7 | } 8 | 9 | printNotificationSummary(int numberOfMessages) { 10 | if (numberOfMessages <= 99) { 11 | print("voce tem ${numberOfMessages} notificacoes"); 12 | } else { 13 | print("Seu telefone possui 99+ notificações"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/lists1.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List listString = []; 3 | List listInteiros = []; 4 | 5 | listString = ["maçã", "fruta", "natan"]; 6 | listInteiros = [ 7 | 1, 8 | 2, 9 | 3, 10 | ]; 11 | 12 | listString.add('poder'); 13 | listString.addAll(['n1', 'n2', 'amigos']); 14 | listString.remove('maçã'); 15 | listString.insert(2, 'Farofa'); 16 | //listString.clear(); 17 | 18 | print(listString); 19 | print(listInteiros); 20 | } 21 | -------------------------------------------------------------------------------- /desafios/dasafio_elevador/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use o IntelliSense para saber mais sobre os atributos possíveis. 3 | // Focalizar para exibir as descrições dos atributos existentes. 4 | // Para obter mais informações, acesse: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Dart & Flutter", 9 | "request": "launch", 10 | "type": "dart" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /desafios/dasafio_elevador/funcao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | //pergunta 3 | pergunta(Object valor) { 4 | var entrada = stdin.readLineSync(); 5 | if (valor is int) { 6 | int chamado = int.parse(entrada!); 7 | valor = chamado; 8 | } else if (valor is double) { 9 | double chamado = double.parse(entrada!); 10 | valor = chamado; 11 | } else if (valor is String) { 12 | String chamado = (entrada!).toString(); 13 | valor = chamado; 14 | } 15 | return valor; 16 | } 17 | -------------------------------------------------------------------------------- /novos_conhecimentos/functionInsider.dart: -------------------------------------------------------------------------------- 1 | int Function(int) somaParcial(int a) { 2 | int c = 0; 3 | return (int b) { 4 | //aqui no caso tem 1 função dentro de outra isso ajuda a reduzir drásticamente o tempo para copilar. 5 | return a + b + c; 6 | }; 7 | } 8 | 9 | main() { 10 | print(somaParcial(2)(10)); 11 | 12 | var somaCom10 = somaParcial(10); //Estudar mais (retornar função #2) 13 | 14 | print(somaCom10(3)); 15 | print(somaCom10(7)); 16 | print(somaCom10(10)); 17 | } 18 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/heranca/cachorro.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_firs 2 | 3 | import 'animal.dart'; 4 | 5 | class Cachorro extends Animal { 6 | 7 | Cachorro({required int idade}) : super(idade: idade); //Caso tenha um construtor na classe pai, é necessário passar o parametro idade 8 | // então eu utilizo o super para chamar o construtor da classe pai 9 | 10 | @override 11 | int calcularIdadeHumana() { 12 | return idade * 7; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cursos/solid_cassio/SOLID/S - Princípio da Responsabilidade Única/srp.dart: -------------------------------------------------------------------------------- 1 | 2 | class ContaSalario { 3 | 4 | validarContaExistente(conta) { 5 | if (conta == null) { 6 | throw new Exception('Conta não encontrada'); 7 | } 8 | } 9 | 10 | validarContaNegativada(conta) { 11 | if (conta.saldo < 0) { 12 | throw new Exception('Conta negativada'); 13 | } 14 | } 15 | 16 | } 17 | main(){ 18 | var conta = new ContaSalario(); 19 | conta.validarContaExistente(null); 20 | } -------------------------------------------------------------------------------- /desafios/desafio_hackmd/metodo_read.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | //metodo leitura revisar 3 | pergunta(Object valor) { 4 | var entrada = stdin.readLineSync(); 5 | if (valor is int) { 6 | int chamado = int.parse(entrada!); 7 | valor = chamado; 8 | } else if (valor is double) { 9 | double chamado = double.parse(entrada!); 10 | valor = chamado; 11 | } else if (valor is String) { 12 | String chamado = (entrada!).toString(); 13 | valor = chamado; 14 | } 15 | return valor; 16 | } 17 | -------------------------------------------------------------------------------- /novos_conhecimentos/funcaoParametro2.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | void executar(Function fnPar, Function fnImpar) { 4 | Random().nextInt(10) % 2 == 0 ? fnPar() : fnImpar(); 5 | 6 | /* if (Random().nextInt(10) % 2 == 0) { 7 | fnPar(); //mesma coisa; 8 | } else { 9 | fnImpar(); 10 | }*/ 11 | } 12 | 13 | main() { 14 | var minhaFnPar = () => print("Eita o valor é par"); 15 | var minhaFnImpar = () => print("Eita o valor é impar"); 16 | 17 | executar(minhaFnPar, minhaFnImpar); 18 | } 19 | -------------------------------------------------------------------------------- /desafios/desafio_matriz/main.dart: -------------------------------------------------------------------------------- 1 | import 'pergunta.dart'; 2 | 3 | main() { 4 | List matriz = []; 5 | 6 | print('Digite o primeiro valor'); 7 | int primeiroValor = pergunta(0); 8 | 9 | print('Digite o segundo valor'); 10 | int segundoValor = pergunta(0); 11 | 12 | for (var i = 0; i < 10; i++) { 13 | List list = []; 14 | 15 | for (var j = 0; j < 10; j++) { 16 | list.add(j); 17 | } 18 | matriz.add(list); 19 | } 20 | 21 | print(matriz); 22 | print(matriz[2][4]); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/set.dart: -------------------------------------------------------------------------------- 1 | class Adulto { 2 | 3 | String _nome = "joão"; 4 | int _idade = 0; 5 | int _tamanho = 0; 6 | 7 | Adulto(this._nome, this._idade, this._tamanho) {} 8 | 9 | int get tamanho{ 10 | return _tamanho; 11 | } 12 | 13 | set tamanho(int tamanho) { 14 | if(tamanho > 0 && tamanho < 200){ 15 | _tamanho = tamanho; 16 | } 17 | } 18 | } 19 | 20 | main() { 21 | Adulto pessoa = new Adulto("2323", 200 , 150); 22 | print(pessoa.tamanho); 23 | 24 | } -------------------------------------------------------------------------------- /novos_conhecimentos/receber_valor_classe.dart: -------------------------------------------------------------------------------- 1 | import 'basicClass2.dart'; 2 | 3 | main(){ 4 | Gente gente = Gente(nome: 'Natan', idade: 20, sexo: 'm'); 5 | 6 | print(gente.sexo); 7 | print(gente.idade); 8 | print(gente.nome); 9 | } 10 | 11 | class Gente { 12 | String nome =''; 13 | int idade = 0; 14 | String sexo = ''; 15 | 16 | String _nomeLocal = 'local'; 17 | final umaVez = 'deu'; 18 | 19 | Gente({required String this.nome, required int this.idade, required String this.sexo}); 20 | 21 | 22 | } -------------------------------------------------------------------------------- /novos_conhecimentos/reduce.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var notas = [8.3, 8.0, 2.4, 4.5, 9.3, 5.0, 7.5]; 3 | var total = notas.reduce(somar); 4 | print("o valor é: $total"); 5 | 6 | var nomes = ['Ana', 'Bia', 'Carlos', 'Daniel', 'Maria', 'Pedro']; 7 | print(nomes.reduce(juntar)); 8 | } 9 | 10 | double somar(double a, double b) { 11 | print('$a $b'); 12 | return a + b; 13 | } 14 | String juntar(String acumulador, String elemento) { 15 | print("$acumulador => $elemento"); 16 | return "$acumulador,$elemento"; 17 | } 18 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/modelo/venda_item.dart: -------------------------------------------------------------------------------- 1 | import './produto.dart'; 2 | 3 | class VendaItem { 4 | Produto? produto; 5 | int quantidade; 6 | double? _preco; 7 | 8 | VendaItem({this.produto, this.quantidade = 1}); 9 | 10 | double get preco { 11 | if (produto != null && _preco == null) { 12 | _preco = produto!.precoComDesconto; 13 | } 14 | return _preco!; 15 | } 16 | 17 | void set preco(double novoPreco) { 18 | if (novoPreco > 0) { 19 | _preco = novoPreco; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_10.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'metodo_read.dart'; 4 | 5 | void main() { 6 | stdout.write("Please give us a number: "); 7 | int chosenNumber = pergunta(0); 8 | 9 | checkPrime(chosenNumber); 10 | } 11 | 12 | void checkPrime(int number) { 13 | List a = [ 14 | for (var i = 1; i <= number; i++) 15 | if (number % i == 0) i 16 | ]; 17 | 18 | a.length == 2 19 | ? print("The chosen number is a prime") 20 | : print("The chosen number is not a prime"); 21 | } -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_13.dart: -------------------------------------------------------------------------------- 1 | /*Escreva um programa (função) que receba uma lista e retorne uma nova lista que contenha 2 | todos os elementos da primeira lista menos todas as duplicatas.*/ 3 | main() { 4 | List listaRandom = [2, 3, 2, 9, 5, 4, 3, 12, 32, 99, 2]; 5 | var listaCorreta = removeDuplicatas(listaRandom); 6 | print(listaCorreta); 7 | } 8 | 9 | removeDuplicatas(List list) { 10 | return list.toSet().toList(); //o toSet() remove os elementos duplicados e o toList() transforma em lista 11 | } 12 | -------------------------------------------------------------------------------- /novos_conhecimentos/parametroObrigatorio.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | adicionarUsuario( 3 | nome: 'natan', 4 | email: 'natanvalimcardoso@hotmail.com', 5 | idade: 35, 6 | cep: '88900-000'); 7 | //os 2 pontos ex= cep : servem para setar qual vai ser o valor recebido e assim nao precisa colocar em ordem. 8 | } 9 | 10 | void adicionarUsuario( 11 | {required String nome, 12 | required String email, 13 | required int idade, 14 | required String cep}) { 15 | //o required obriga o usuario a colocar. 16 | } 17 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_1.dart: -------------------------------------------------------------------------------- 1 | // Crie um programa que peça ao usuário para digitar seu nome e sua idade. 2 | // Imprima uma mensagem que diga quantos anos eles têm para completar 100 anos. 3 | 4 | import 'dart:io'; 5 | 6 | import 'metodo_read.dart'; 7 | main() { 8 | print('Digite seu nome: '); 9 | String nome = pergunta(''); 10 | 11 | print('Digite sua idade: '); 12 | int idade = pergunta(0); 13 | 14 | 15 | 16 | print('Senhor $nome você tem $idade anos e falta ${100 - idade} anos para chegar aos 100 anos'); 17 | } 18 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/interface/main.dart: -------------------------------------------------------------------------------- 1 | import 'carro.dart'; 2 | import 'gol.dart'; 3 | import 'uno.dart'; 4 | 5 | void main() { 6 | var uno = Uno(); 7 | var gol = Gol(); 8 | 9 | printarDadosCarro(uno); 10 | printarDadosCarro(gol); 11 | 12 | } 13 | 14 | void printarDadosCarro(Carro carro) { 15 | print(''' 16 | Carro: 17 | Tipo: ${carro.runtimeType} 18 | Portas: ${carro.portas} 19 | Rodas: ${carro.rodas} 20 | Motor: ${carro.motor} 21 | Velocidade máxima: ${carro.velocidadeMaxima()} 22 | '''); 23 | } 24 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/teste/teste_carro.dart: -------------------------------------------------------------------------------- 1 | import '../modelo/carro.dart'; 2 | 3 | main() { 4 | var c1 = new Carro(320); 5 | 6 | while (!c1.estaNoLimite()) { 7 | print("A velocidade atual é ${c1.acelerar()} Km/h."); 8 | } 9 | 10 | print("O carro chegou no máximo com velocidade ${c1.velocidadeAtual} Km/h."); 11 | 12 | while (!c1.estaParado()) { 13 | print("A velocidade atual é ${c1.frear()} Km/h."); 14 | } 15 | 16 | c1.velocidadeAtual = 500; 17 | print("O carro parou com velocidade ${c1.velocidadeAtual} Km/h."); 18 | } 19 | -------------------------------------------------------------------------------- /desafios/dasafio_elevador/elevador.dart: -------------------------------------------------------------------------------- 1 | class Elevador { 2 | int pesoElevador; 3 | int andaresPredio; 4 | List elevador = []; 5 | 6 | Elevador({required this.pesoElevador, required this.andaresPredio }); 7 | 8 | adicionarElevador(int tipoPesoElevador, int tipoAndaresPredio) { 9 | elevador.add(Elevador(pesoElevador: tipoPesoElevador, andaresPredio: tipoAndaresPredio)); 10 | } 11 | 12 | subirElevador() { 13 | elevador.length++; 14 | } 15 | 16 | descerElevador() { 17 | elevador.length--; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cursos/exerc_normais/ex4.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | /* Faça um programa que receba um número, calcule e mostre a tabuada desse número. */ 4 | void main() { 5 | int tabuada = 0; 6 | var contador = 0; 7 | 8 | print("Digite um número: "); 9 | var input = stdin.readLineSync(); 10 | 11 | if (input != null) { 12 | var numero = int.parse(input); 13 | 14 | for (int i = 0; i < 11; i++) { 15 | tabuada = (numero * contador); 16 | 17 | print('${numero} x ${contador} = ${tabuada}'); 18 | contador++; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /novos_conhecimentos/functionFilter.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var notas = [8.3, 8.1, 2.4, 4.5, 9.3, 5.3, 7.5]; 3 | 4 | bool Function(double) notasBoasFn = (double nota) => nota >= 7; //bom para reduzir codigo, codigo grande = for-in.dart 5 | var notasMuitoBoasfn = (double nota) => nota >= 9; // da de fazer assim. 6 | 7 | var notasBoas = notas.where(notasBoasFn); // vai tirar ou remover o resultado de acordo com a função true or false. 8 | var notasMuitoBoas = notas.where(notasMuitoBoasfn); 9 | 10 | print(notasBoas); 11 | print(notasMuitoBoas); 12 | } 13 | -------------------------------------------------------------------------------- /novos_conhecimentos/maps2.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var hortifrute = {'cod 1': 'maça', 'cod 2': 'banana', 'cod 3': 'ovos'}; 3 | 4 | print(hortifrute.keys); 5 | 6 | print(hortifrute.values); 7 | 8 | print(hortifrute['cod 2']); 9 | 10 | hortifrute.forEach((key, value) => print('$key and $value')); 11 | 12 | hortifrute['cod 4'] = 'melao'; 13 | maps2(); 14 | } 15 | 16 | maps2() { 17 | Map salario = { 18 | "gerente": 2000.00, 19 | "vendedor": 1500.00, 20 | "estagiario": 600.00 21 | }; 22 | print(salario); 23 | } 24 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/generico/main.dart: -------------------------------------------------------------------------------- 1 | import 'presente.dart'; 2 | 3 | void main() { 4 | final presenteBola = Presente(); 5 | final presenteBoneca = Presente(); 6 | final presenteTelefone = Presente(); 7 | 8 | presenteBola.adicionar(Bola()..nome = 'Bola de Futebol'); 9 | presenteBola.adicionar(Bola()..nome = 'Bola de Futebol Brasileiro'); 10 | 11 | presenteBoneca.adicionar(Boneca()..nome = 'Boneca'); 12 | presenteTelefone.adicionar(Telefone()..nome = 'Telefone'); 13 | 14 | print(presenteBola.mostrarItens()); 15 | } 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/operadorTernario.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | main() { 4 | print("Esta chovendo? (s/N)"); 5 | bool estaChovendo = stdin.readLineSync() == "s"; 6 | 7 | print("Esta Nevando? (s/N)"); 8 | bool estaFrio = stdin.readLineSync() == "s"; 9 | 10 | String resultado = estaChovendo || estaFrio ? "Ficar em casa!" : "Sair!"; 11 | // expressão // ? caso essa expressão seja verdadeira true // : caso essa expressão seja falso. false 12 | print(resultado); 13 | print(estaChovendo && estaFrio ? "Azarado!" : "Sortudo"); 14 | } 15 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/ordenando_nomes/people.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | class People implements Comparable { 3 | String nome; 4 | String telefone; 5 | 6 | People({required this.nome, required this.telefone}); 7 | 8 | @override 9 | int compareTo(People other) { 10 | return nome.compareTo(other.nome); // o implements do Comparable serve para caso eu precise comparar os valores e depois ordenar 11 | } 12 | 13 | @override 14 | String toString() => 'People(nome: $nome, telefone: $telefone)'; 15 | } 16 | -------------------------------------------------------------------------------- /novos_conhecimentos/mapsUdemy.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var alunos = [ 3 | {"nome": "natan", "nota": 5.5}, 4 | {"nome": "laun", "nota": 8.7}, 5 | {"nome": "gustavo", "nota": 6.2}, 6 | {"nome": "arthur", "nota": 9.5}, 7 | {"nome": "henrique", "nota": 7.5}, 8 | ]; 9 | 10 | String Function(Map) pegarApenasONome = (aluno) => aluno['nome']; 11 | double Function(Map) pegarApenasANota = (notas) => notas['nota']; 12 | var resultados = alunos.map(pegarApenasANota); 13 | var nomes = alunos.map(pegarApenasONome); 14 | 15 | print(nomes); 16 | print(resultados); 17 | } 18 | -------------------------------------------------------------------------------- /desafios/desafio_carros/teste/teste_carro.dart: -------------------------------------------------------------------------------- 1 | import '../modelo/carro.dart'; 2 | 3 | main() { 4 | var ferrari = new Carro(320); 5 | 6 | while (!ferrari.estaNoLimite()) { 7 | print("A velocidade atual é ${ferrari.acelerar()} Km/h."); 8 | } 9 | 10 | print("O carro chegou no máximo com velocidade ${ferrari.velocidadeAtual} Km/h."); 11 | 12 | while (!ferrari.estaParado()) { 13 | print("A velocidade atual é ${ferrari.frear()} Km/h."); 14 | } 15 | 16 | ferrari.velocidadeAtual = 500; 17 | print("O carro parou com velocidade ${ferrari.velocidadeAtual} Km/h."); 18 | } 19 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_5.dart: -------------------------------------------------------------------------------- 1 | // e escreva um programa que retorne uma lista que contenha apenas os elementos 2 | // que são comuns entre eles (sem duplicatas). Certifique-se de que seu programa 3 | // funcione em duas listas de tamanhos diferentes. 4 | void main() { 5 | List a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; 6 | List b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 89]; 7 | Set c = {}; 8 | 9 | for (var i in a) { 10 | for (var j in b) { 11 | if (i == j) { 12 | c.add(i); 13 | } 14 | } 15 | } 16 | print(c.toList()); 17 | } -------------------------------------------------------------------------------- /desafios/desafio_banco/conta_imposto.dart: -------------------------------------------------------------------------------- 1 | class ContaImposto { 2 | double percentualImposto = 0.0; 3 | double saldo = 0.0; 4 | double sacarValor = 0.0; 5 | double depositarValor = 0.0; 6 | 7 | ContaImposto( 8 | {required double this.percentualImposto, 9 | required double this.saldo, 10 | required double this.sacarValor, 11 | required double this.depositarValor}); 12 | 13 | calcularImposto() => saldo = saldo - (percentualImposto * 100) / saldo; 14 | 15 | sacar() => saldo = saldo - sacarValor; 16 | 17 | depositar() => saldo = saldo + depositarValor; 18 | } 19 | -------------------------------------------------------------------------------- /novos_conhecimentos/mapReduce.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var alunos = [ 3 | // Aqui ele recebe uma lista do tipo map que ta recebendo a key como string e o value como object 4 | {"nome": "natan", "nota": 5.5}, 5 | {"nome": "laun", "nota": 8.7}, 6 | {"nome": "gustavo", "nota": 6.2}, 7 | {"nome": "arthur", "nota": 9.5}, 8 | {"nome": "henrique", "nota": 7.5}, 9 | ]; 10 | 11 | var total = alunos 12 | .map((aluno) => aluno['nota']) 13 | .map((nota) => (nota as double)) 14 | .reduce((total, acumulador) => total + acumulador); 15 | 16 | print("Total é: $total"); 17 | } 18 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/manipulacao_int.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | double valor = 42.32; 3 | int numero = 10; 4 | String valorString = '12'; 5 | 6 | print(valor.round()); 7 | print(valor.roundToDouble()); 8 | 9 | var convertido1 = int.parse(valorString); // Converte o numero obrigatoriamente e caso não possa converter da erro 10 | var convertido2 = int.tryParse(valorString); // converte o numero se possivel se não ele não converte. 11 | 12 | soma(numero, valor); 13 | 14 | } 15 | soma(int valorUm, double valorDois){ 16 | double soma = valorUm + valorDois; 17 | return soma; 18 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/iterables.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var numeros = List.generate(10, (index) => index); 3 | var palavras = ['fruta', 'aviao', 'poder', 'leao']; 4 | 5 | numeros.where((element) => element != 5).forEach((element) { //O where vai filtrar ou seja ele vai retorna todos valores a não ser o valor 5 6 | print(element); // E o forEach é um For-in que vai percorrer todos os valores. ELe não pode usar com nada Async 7 | }); 8 | 9 | var novaPalavra = palavras.where((element) => element == 'aviao'); 10 | print(novaPalavra); 11 | } 12 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/getters_setters/pessoa.dart: -------------------------------------------------------------------------------- 1 | // Esses metodos normalmente não são usados a não ser se tiver uma regra de negocio 2 | class Pessoas { 3 | String _nome = 'natan'; 4 | late int _idade; 5 | 6 | String get nome => _nome; 7 | int get idade => _idade; 8 | 9 | set nome(String nome) => _nome = nome; 10 | 11 | //* Com regra de negocio 12 | 13 | set idade(int idade) { 14 | if (idade > 18 && idade < 60) { 15 | _idade = idade; 16 | } else { 17 | throw Exception('Idade inválida'); 18 | } 19 | } 20 | } 21 | 22 | //Método set serve para atribuir um valor a variavel -------------------------------------------------------------------------------- /testes/nulo.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | class Pessoa { 3 | final String nome; 4 | final int idade; 5 | final List? roupas; 6 | 7 | Pessoa({ 8 | required this.nome, 9 | required this.idade, 10 | this.roupas, 11 | }); 12 | 13 | maiorIdade(int idadePessoa){ 14 | return idadePessoa >= 18; 15 | } 16 | } 17 | 18 | void main(List args) { 19 | List lista = [ 20 | Pessoa(nome: 'natan', idade: 12, roupas: []), 21 | ]; 22 | 23 | var valor = lista.first.roupas ?? 'Não recebi nada pois é nulo'; 24 | 25 | print(valor); 26 | } 27 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/referencia_memoria.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var listaPessoas = ['natan', 'diana', 'luana', 'ruan']; 3 | 4 | // metodoLimparLista(listaPessoas);// O problema disso é que ele limpa a lista principal 5 | // print(listaPessoas); 6 | 7 | var novaLista = metodoLimparLista2(listaPessoas); 8 | print(listaPessoas); 9 | print(novaLista); 10 | 11 | 12 | } 13 | //!Tomar cuidado 14 | metodoLimparLista(List lista) { 15 | lista.clear(); 16 | } 17 | 18 | //* Correto 19 | metodoLimparLista2(List lista) { 20 | var novaLista = [...lista]; 21 | novaLista.clear(); 22 | return novaLista; 23 | } -------------------------------------------------------------------------------- /cursos/exemplos_classes/get.dart: -------------------------------------------------------------------------------- 1 | class Bebe { 2 | //Na questão de segurança caso eu queira que meu bebe não possa ter a idade alterada por fora da classe colocamos um _ na frente do nome da váriavel 3 | String _nome = "bebes"; 4 | int _idade = 0; 5 | int _tamanho = 0; 6 | 7 | Bebe(this._nome, this._idade, this._tamanho) {} 8 | 9 | int get idade{ 10 | return _idade; 11 | } 12 | 13 | } 14 | 15 | main() { 16 | Bebe pessoa = new Bebe("", 2 , 232); 17 | print(pessoa.idade); // a unica forma que eu pude iniciar a idade foi por que eu startei o get idade acima se não eu não conseguiria usar 18 | 19 | } 20 | -------------------------------------------------------------------------------- /novos_conhecimentos/basicClass.dart: -------------------------------------------------------------------------------- 1 | class veiculo { 2 | int maxSpeed = 80; //orientação objeto 3 | int minSpeed = 30; // exemplo caneta bool tampada ou nao, string cor , 4 | 5 | void drive() { 6 | //classe Criada. 7 | print('dirigir'); 8 | } 9 | } 10 | 11 | void main() { 12 | veiculo v1 = veiculo(); //criando outras classes derivado da main 13 | veiculo v2 = veiculo(); //criando outras classes derivado da main 14 | 15 | v1.maxSpeed = 100; //pode escolher de acordo com as variavéis depois. 16 | v1.drive(); //Função dentro de uma classe 17 | 18 | print(v1.maxSpeed); 19 | print(v2.maxSpeed); 20 | print(v2.minSpeed); 21 | } 22 | -------------------------------------------------------------------------------- /novos_conhecimentos/function2.dart: -------------------------------------------------------------------------------- 1 | void main() { // quando tem void não retorna nada = return 2 | int resultado = adicionar(9, 5); 3 | print(resultado); 4 | print(resultado * resultado); 5 | } //Quando tiver valor a função não pode ser Var, só dynimic, int, Double... 6 | 7 | int adicionar(var num1, var num2) { 8 | 9 | print("Antes do return"); 10 | return num1 + num2; //O return só puxa até ele depois não: Parametro 11 | // print("Depois do return"); 12 | 13 | } 14 | 15 | add(){ 16 | print('essa é uma função'); //sem parametro 17 | } -------------------------------------------------------------------------------- /cursos/masterclass/copywith.dart: -------------------------------------------------------------------------------- 1 | 2 | main() { 3 | var person = Person(age: 30, name: "John", lastName: 'Valim'); 4 | person = person.copyWith(age: 40); 5 | print("${person.age} ${person.name} ${person.lastName}"); 6 | } 7 | class Person { 8 | String name; 9 | String lastName; 10 | int age; 11 | 12 | Person({required this.name, required this.lastName, required this.age}); 13 | 14 | Person copyWith({ 15 | String? name, 16 | String? lastName, 17 | int? age, 18 | }) { 19 | return Person( 20 | name: name ?? this.name, 21 | lastName: lastName ?? this.lastName, 22 | age: age ?? this.age, 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/exceptions.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | print('Digite sua idade: '); 5 | var idade = stdin.readLineSync(); 6 | 7 | try { 8 | var idadeAtual = int.parse(idade!); 9 | if (idadeAtual == 40) { 10 | throw new Exception(); 11 | } 12 | print('Sua idade é: $idade'); 13 | } on FormatException catch (e, s) { 14 | print('Erro no formato'); 15 | print(e); 16 | print(s); 17 | } on TypeError { 18 | print('Erro no tipo de dado'); 19 | } on Exception { 20 | print('Essa idade não é valida'); 21 | } catch (e) { 22 | print('Não foi possivel fazer a conversão'); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/lista.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var listaStrings = ['luana', 'luiz', 'lucas', 'luciana', 'luiz']; 3 | var listaInt = [1, 3, 4, 5, 1, 2]; 4 | 5 | String primeiroNome = listaStrings.firstWhere((element) =>element =='luiz'); // ele percorre a lista e quando encontra o elemento luiz ele para 6 | print(primeiroNome); //luiz 7 | 8 | int somaTotal = listaInt.fold(0, (previousValue, element) => previousValue += element); 9 | print(somaTotal); //16 10 | 11 | var juntarLista = [2, 5, 9,...listaInt]; // aqui ele junta a lista criada com a atual 12 | print(juntarLista); // 2, 5, 9, 1, 3, 4, 5, 1, 2 13 | 14 | 15 | ;} 16 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/interface/carro.dart: -------------------------------------------------------------------------------- 1 | // Isso aqui é uma class "ABSTRATA"" 2 | //* pois tem métodos implementados!! 3 | 4 | abstract class CarroClasseAbstrata { 5 | void velocidadeMaxima(){ 6 | print('Velocidade máxima'); 7 | } 8 | } 9 | 10 | // isso aqui é uma "INTERFACE" 11 | //* pois não tem métodos implementados!! 12 | 13 | abstract class CarroInterface { 14 | void velocidadeMaxima(); 15 | } 16 | 17 | 18 | // -------------------------------- // Interface exemplo // -------------------------------- // 19 | 20 | abstract class Carro{ 21 | abstract int portas; 22 | abstract int rodas; 23 | abstract String motor; 24 | 25 | int velocidadeMaxima(); 26 | } -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_12.dart: -------------------------------------------------------------------------------- 1 | /*Escreva um programa que pergunte ao usuário quantos números de Fibonnaci gerar e depois os gere. Aproveite 2 | esta oportunidade para pensar em como você pode usar funções.*/ 3 | 4 | import 'metodo_read.dart'; 5 | 6 | main(){ 7 | print('Digite quantos números de Fibonacci você quer gerar: '); 8 | int quantidadeNumero = pergunta(0); 9 | List lista = fibonacciNumbers(quantidadeNumero); 10 | print(lista); 11 | } 12 | 13 | List fibonacciNumbers(int chosenNumber) { 14 | List fibList = [1, 1]; 15 | 16 | for (var i = 0; i < chosenNumber; i++) { 17 | fibList.add(fibList[i] + fibList[i + 1]); 18 | } 19 | return fibList; 20 | } -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_14.dart: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Escreva um programa (usando funções!) que peça ao usuário uma longa string contendo várias palavras. Imprima de volta para o usuário a mesma string, exceto com as palavras em ordem inversa. 4 | 5 | Por exemplo, digamos que eu digite a string: 6 | 7 | My name is Michele 8 | 9 | Então eu veria a string: 10 | 11 | Michele is name My 12 | 13 | */ 14 | import 'metodo_read.dart'; 15 | 16 | void main() { 17 | print("Digite uma frase: "); 18 | String frase = pergunta(''); 19 | 20 | reverseSentence(frase); 21 | } 22 | 23 | void reverseSentence(String sentence) { 24 | String a = sentence.split(" ").reversed.toList().join(" "); 25 | print(a); 26 | } -------------------------------------------------------------------------------- /novos_conhecimentos/enum.dart: -------------------------------------------------------------------------------- 1 | enum Color { 2 | red, 3 | blue, 4 | white, 5 | green, 6 | yellow, 7 | } 8 | 9 | main(){ 10 | var corFavorita = Color.red; 11 | switch (corFavorita) { 12 | case Color.red: 13 | print('Você escolheu a cor vermelha'); 14 | break; 15 | case Color.blue: 16 | print('Você escolheu a cor azul'); 17 | break; 18 | case Color.white: 19 | print('Você escolheu a cor branca'); 20 | break; 21 | case Color.green: 22 | print('Você escolheu a cor verde'); 23 | break; 24 | case Color.yellow: 25 | print('Você escolheu a cor amarela'); 26 | break; 27 | default: 28 | print('Você não escolheu nenhuma cor'); 29 | } 30 | } -------------------------------------------------------------------------------- /cursos/exerc_normais/poo.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | class ValorController { 4 | final int? valorClasse; 5 | ValorController({this.valorClasse}); 6 | } 7 | 8 | main() { 9 | ValorController valor = ValorController(); 10 | 11 | print("digite um numero inteiro: "); 12 | var entrada = stdin.readLineSync(); 13 | int numero = int.parse(entrada!); 14 | } 15 | 16 | /* var resultado = ValorController(valorClasse: numero); 17 | print("O valor é ${resultado.valorClasse}"); */ 18 | 19 | class Api { 20 | final String recebendo; 21 | 22 | Api({required this.recebendo}); 23 | 24 | getRecebendo() { 25 | var cepDigitado = '323232'; 26 | var url = 'https://api.postmon.com.br/v1/cep/$cepDigitado'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /testes/parametros.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | print('primeiro que o debug'); 3 | calcularParImpar(10); 4 | print('depois do debug'); 5 | // somarNome(idade: 17, tamanho: 1.76, nome: 'Vinicio'); 6 | // somarNome2('vini', 13, 1.73); 7 | } 8 | 9 | // somarNome2(String nome, int idade, double tamanho) { 10 | // print('O nome é: $nome, eu tenho a idade $idade e o tamanho $tamanho'); 11 | // } 12 | 13 | // somarNome({required String nome, int? idade, double? tamanho}) { 14 | // print('O nome é: $nome, eu tenho a idade $idade e o tamanho $tamanho'); 15 | // } 16 | 17 | calcularParImpar(int numero) { 18 | if (numero % 2 == 0) { 19 | print('O número $numero é par'); 20 | } else { 21 | print('O número $numero é impar'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cursos/exerc_normais/exerc_estruturas.dart: -------------------------------------------------------------------------------- 1 | // import 'dart:io'; 2 | 3 | // void main() { 4 | // stdout.write('Salário Fixo => R\$ '); 5 | // double salarioFixo = double.parse(stdin.readLineSync()); 6 | 7 | // stdout.write('Valor das Vendas => R\$ '); 8 | // double valorVendas = double.parse(stdin.readLineSync()); 9 | 10 | // stdout.write('Percentual de Comissão => '); 11 | // double percentualComissao = double.parse(stdin.readLineSync()) / 100; 12 | 13 | // double salarioFinal = salarioFixo + percentualComissao * valorVendas; 14 | 15 | // print('Comissão => R\$ ' + 16 | // (percentualComissao * valorVendas).toStringAsFixed(2) + 17 | // '\nSalário Final => R\$ ' + 18 | // salarioFinal.toStringAsFixed(2)); 19 | // } 20 | -------------------------------------------------------------------------------- /cursos/exerc_normais/ex6.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | /* Faça um programa que receba 4 números, calcule e mostre a soma dos números pares e a soma dos 4 | números primos. */ 5 | void main() { 6 | double somaPar = 0; 7 | double somaImpar = 0; 8 | 9 | for (int i = 0; i < 6; i++) { 10 | print('Escreva um número:'); 11 | var input = stdin.readLineSync(); 12 | if (input != null) { 13 | var numero = int.parse(input); 14 | 15 | if (numero % 2 == 0) { 16 | somaPar = somaPar + numero; 17 | } 18 | if ((numero / 2) % 2 == 0) { 19 | somaImpar = somaPar + numero; 20 | } 21 | } 22 | } 23 | print('A soma dos números pares é: $somaPar'); 24 | print('A soma dos números Impares é: $somaImpar'); 25 | } 26 | -------------------------------------------------------------------------------- /novos_conhecimentos/map.dart: -------------------------------------------------------------------------------- 1 | void main(List args) { 2 | Iterable allSongs = [ 3 | Song("Skyfall", "Adele", "Rock", 2012, 5, true), 4 | Song("Material Girl", "Madonna", "Jazz", 1984, 5, false), 5 | Song("Material Girl", "justin Biber", "Jazz", 1984, 5, false), 6 | ]; 7 | 8 | List songTitles = allSongs 9 | .map((song) => song.artist.toLowerCase()) 10 | .toList() 11 | .where((title) => title.contains("b")) 12 | .toList(); 13 | 14 | print(songTitles); 15 | } 16 | 17 | class Song { 18 | String title; 19 | String artist; 20 | String genre; 21 | int year; 22 | int rating; 23 | bool isExplicit; 24 | Song(this.title, this.artist, this.genre, this.year, this.rating, this.isExplicit); 25 | } 26 | -------------------------------------------------------------------------------- /cursos/solid_cassio/SOLID/I - Principio da Segregação de interfaces/isp.dart: -------------------------------------------------------------------------------- 1 | //Princípio da segregação de interfaces 2 | 3 | //As vezes é melhor ter várias interfaces especificas, ao invés de uma só. 4 | abstract class Pessoa { 5 | void pegarLivro(); 6 | } 7 | 8 | abstract class Servicos { 9 | void pagarEscola(int valor); 10 | void verPefil(); 11 | } 12 | 13 | class Aluno extends Pessoa implements Servicos { 14 | @override 15 | void pagarEscola(int valor) => print('Pagando escola'); 16 | 17 | @override 18 | void verPefil() => print('Vendo perfil'); 19 | 20 | @override 21 | void pegarLivro() => print('Pegando livro'); 22 | } 23 | 24 | class Professor extends Pessoa { 25 | @override 26 | void pegarLivro() => print('Pegando livro 2 livros'); 27 | } -------------------------------------------------------------------------------- /testes/lista_vini.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | //ok 3 | main() { 4 | List listaDois = []; 5 | List listaTriplicada = []; 6 | 7 | for (var i = 0; i < 4; i++) { 8 | listaDois.add(leia(i)); 9 | } 10 | 11 | for (var i = 0; i < listaDois.length; i++) { 12 | listaTriplicada.add((listaDois[i] * 3)); 13 | } 14 | 15 | print("A lista dois é: $listaDois"); 16 | print("A lista três é: $listaTriplicada"); 17 | } 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | leia(int valor) { 31 | int numero; 32 | print("Digite o valor $valor"); 33 | var entrada = stdin.readLineSync(); 34 | if (entrada != null) { 35 | numero = int.parse(entrada); 36 | } else { 37 | numero = 0; 38 | } 39 | return numero; 40 | } 41 | -------------------------------------------------------------------------------- /desafios/desafio_carros/modelo/carro.dart: -------------------------------------------------------------------------------- 1 | class Carro { 2 | final int velocidadeMaxima; 3 | int velocidadeAtual = 0; 4 | 5 | Carro([this.velocidadeMaxima = 200]); 6 | 7 | int acelerar() { 8 | if (velocidadeAtual + 5 >= velocidadeMaxima) { 9 | velocidadeAtual = velocidadeMaxima; 10 | } else { 11 | velocidadeAtual += 5; 12 | } 13 | return velocidadeAtual; 14 | } 15 | 16 | int frear() { 17 | if (velocidadeAtual - 5 <= 0) { 18 | velocidadeAtual = 0; 19 | } else { 20 | velocidadeAtual -= 5; 21 | } 22 | return velocidadeAtual; 23 | } 24 | 25 | bool estaNoLimite() { 26 | return velocidadeAtual == velocidadeMaxima; 27 | } 28 | 29 | bool estaParado() { 30 | return velocidadeAtual == 0; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/construtores.dart: -------------------------------------------------------------------------------- 1 | class Data { 2 | late int dia; 3 | late int mes; 4 | late int anos; 5 | 6 | Data(int this.dia, int this.mes, int this.anos) { 7 | 8 | } 9 | //caso eu nao sete os valores de forma explicida eu sou obrigado a colocar o valor em uma váriavel para nao dar nulo 10 | //o this representa um novo objeto a ser criado ex: o Data de compra é um objeto entao ele consegue usar os mesmos nomes 11 | String obterComRetorno() { 12 | return ("$dia / $mes / $anos"); 13 | } 14 | } 15 | 16 | main() { 17 | 18 | 19 | 20 | var dataCompra = new Data(24, 2, 2002); // o construtor padrão não existe mais então tem que colocar os 3 parametro 21 | 22 | var v1 = dataCompra.obterComRetorno(); 23 | print('consigo retornar variavel:: $v1'); 24 | } 25 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/generico/presente.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | // Criei uma classe que eu mesmo tipei ela como generico dei o nome de itens, pois imagina se eu tivesse que criar um 3 | // adicionar ou remover para cada classe diferente... e dessa forma uso somente um metodo para diferentes classes 4 | class Presente { 5 | var _itens = []; 6 | 7 | void adicionar(Itens item) { 8 | _itens.add(item); 9 | } 10 | 11 | List mostrarItens(){ 12 | return _itens; 13 | } 14 | } 15 | 16 | class Bola { 17 | String? nome; 18 | 19 | @override 20 | String toString() => 'Bola(nome: $nome)'; 21 | } 22 | 23 | class Boneca { 24 | String? nome; 25 | } 26 | 27 | class Telefone { 28 | String? nome; 29 | } 30 | -------------------------------------------------------------------------------- /cursos/solid_cassio/SOLID/D - Principio da Inversão de Dependencias/dip.dart: -------------------------------------------------------------------------------- 1 | //Princípio da inversão de dependências 2 | 3 | // quando criamos nosso objeto o nosso construtor não pode depender de uma classe concreta e sim de abstrações 4 | 5 | abstract class ISaveDataRepository { 6 | void saveData(); 7 | } 8 | 9 | class SaveDataRepositoryImp implements ISaveDataRepository { 10 | @override 11 | void saveData() => print('Salvando dados'); 12 | } 13 | 14 | class Pessoa { 15 | late ISaveDataRepository _repository; 16 | Pessoa(ISaveDataRepository repository) { 17 | _repository = repository; 18 | } 19 | 20 | void salvar() { 21 | _repository.saveData(); 22 | } 23 | } 24 | 25 | void main() { 26 | Pessoa aluno = Pessoa(SaveDataRepositoryImp()); 27 | aluno.salvar(); 28 | } 29 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/dart_async/async_await.dart: -------------------------------------------------------------------------------- 1 | Future main() async { 2 | //* A diferença do Then e do async/await é que o Then é sincrono, ou seja, o código é executado na ordem em que foi escrito 3 | //* ele é so assincrono dentro dele lá sim ele espera pra executar o próximo código 4 | 5 | //* enquanto o async/await é assincrono, ou seja, o código é executado de forma assincrona. ele espera pra executar o próximo código 6 | // com await 7 | int valorAwait = await processoComDados(); 8 | print('O valor com AsyncAwait é: $valorAwait'); 9 | print('Depois do await'); 10 | 11 | // Com Then 12 | processoComDados().then((mensagem) => print('O resultado é: $mensagem')); 13 | print('Depois do then'); 14 | } 15 | 16 | Future processoComDados() { 17 | return Future.delayed(Duration(seconds: 3), () => 42); 18 | } 19 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/conversões/basica.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | void main() { 3 | //* Lista 4 | var frutasLista = [ 5 | 'abacaxi', 6 | 'banana', 7 | 'caju', 8 | ]; 9 | 10 | //* Maps 11 | var frutasMaps = { 12 | {'nome': 'abacaxi'}, 13 | {'nome': 'banana'}, 14 | {'nome': 'caju'}, 15 | }; 16 | 17 | var sucos = frutasLista.map((e) => Suco(sabor: e)).toList(); //converte a lista de strings para lista de sucos 18 | var sucos2 = frutasMaps.map((e) => Suco(sabor: e['nome'] ?? 'Sem sabor')).toList(); //converte a lista de maps para lista de sucos 19 | print(sucos2); 20 | } 21 | 22 | class Suco { 23 | String sabor; 24 | Suco({ 25 | required this.sabor, 26 | }); 27 | 28 | @override 29 | String toString() => 'Suco sabor $sabor'; 30 | } 31 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/classe_data2 copy.dart: -------------------------------------------------------------------------------- 1 | class Data { 2 | late int dia; 3 | late int mes; 4 | late int anos; 5 | 6 | obter() { 7 | print("$dia/$mes/$anos"); 8 | } 9 | 10 | String obterComRetorno() { 11 | return ("$dia / $mes / $anos"); 12 | } 13 | } 14 | 15 | main() { 16 | var dataAniversario = new Data(); 17 | dataAniversario.dia = 3; 18 | dataAniversario.mes = 10; 19 | dataAniversario.anos = 2020; 20 | 21 | var dataCompra = new Data(); 22 | dataCompra.dia = 21; 23 | dataCompra.mes = 12; 24 | dataCompra.anos = 2001; 25 | 26 | 27 | dataCompra.obter(); //aqui esta fazendo o que foi pedido no método 28 | dataAniversario.obter(); 29 | 30 | var v1 = dataCompra.obterComRetorno(); //ja aqui esta retornando os valores de acordo com o return 31 | print('consigo retornar variavel:: $v1'); 32 | } 33 | -------------------------------------------------------------------------------- /novos_conhecimentos/lists2.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | List numero = [10 , 15 ,20 ,30]; 3 | List alimentos =['Arroz', 'Feijão', 'Carne', 'massa']; //listas iniciam-se no número zero, arroz = 0, feijao = 1... 4 | 5 | alimentos.removeAt(1); /* · Remoção de um item == removeAt */ 6 | alimentos.add('Açucar'); /*Adição de itens == add */ 7 | alimentos.insert(2, 'Farofa'); /* Adição de itens em posição específica == insert*/ 8 | print(alimentos.contains('Sal')); /* Verificação se a lista contém algum item, retornar um valor booleano true or false == contains */ 9 | 10 | print('<----------------------->'); 11 | 12 | print(numero); 13 | print(alimentos); 14 | print(alimentos[2]); 15 | 16 | print('<----------------------->'); 17 | 18 | for( int i = 0; i < numero.length; i++){ 19 | 20 | print(numero[i]); 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /cursos/solid_cassio/SOLID/L - Principio da Substituição de Liskov/lsp.dart: -------------------------------------------------------------------------------- 1 | // Os sustipos devem ser sustituives pelos seus tipos base. 2 | 3 | abstract class Conta { 4 | void depositar(int valor) => print('Depositando...'); 5 | void verSaldo() => print('Saldo...'); 6 | } 7 | 8 | class ContaCorrente implements Conta { 9 | @override 10 | void depositar(int valor) => print('Depositando...'); 11 | 12 | @override 13 | void verSaldo() => print('Saldo...'); 14 | } 15 | 16 | class ContaPoupanca implements Conta { 17 | @override 18 | void depositar(int valor) => print('Depositando...'); 19 | 20 | @override 21 | void verSaldo() => throw Exception('Erro'); 22 | } 23 | 24 | // esse é o problema da substituição, 25 | void main() { 26 | Conta conta = ContaCorrente(); 27 | conta.depositar(10); 28 | conta = ContaPoupanca(); 29 | conta.verSaldo(); 30 | } 31 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_11.dart: -------------------------------------------------------------------------------- 1 | /*Escreva um programa que receba uma lista de números, por exemplo 2 | 3 | a = [5, 10, 15, 20, 25] 4 | e cria uma nova lista apenas com o primeiro e o último elementos da lista fornecida. 5 | Para praticar, escreva este código dentro de uma função.*/ 6 | 7 | main() { 8 | List lista = [5, 10, 15, 20, 25]; 9 | 10 | var listaComPrimeirosUltimos = primeiroUltimoLista(lista); 11 | print(listaComPrimeirosUltimos); 12 | } 13 | 14 | 15 | // minha forma 16 | 17 | List primeiroUltimoLista(List lista) { 18 | List novaLista = []; 19 | novaLista.add(lista.first); 20 | novaLista.add(lista.last); 21 | return novaLista; 22 | } 23 | 24 | // Forma mais resumida 25 | 26 | List webExemple(List lista) { 27 | return [lista.first, lista.last]; // Forma pra colocar mais de um elemento dentro de uma lista 28 | } 29 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/dart_async/future_foreach.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ffi'; 2 | 3 | Future main() async { 4 | var nomes = ['Natan', 'Diana', 'Ana', 'Joao']; 5 | 6 | //*Forma de percorrer um lista assincrona, a cada 2 segundo um nome é printado 7 | for (var nome in nomes) { 8 | print(await saudacao(nome)); 9 | } 10 | 11 | //*Caso eu queira printar somente quando todos nomes estiverem pronto utilizamos: Map + Future.wait 12 | var nomesFuturo = nomes.map((nome) => saudacao(nome)).toList(); 13 | var saudacoes = await Future.wait(nomesFuturo); 14 | print(saudacoes); 15 | } 16 | 17 | ////////////////// Metodos ///////////////// 18 | 19 | Future saudacao(String nome) { 20 | return Future.delayed(Duration(seconds: 2), () => 'Olá $nome'); 21 | } 22 | 23 | Future saudacaoNatan() async { 24 | var texto = await saudacao('Natan'); 25 | return texto; 26 | } 27 | -------------------------------------------------------------------------------- /desafios/dasafio_elevador/pessoa.dart: -------------------------------------------------------------------------------- 1 | class Pessoa { 2 | String nome; 3 | int peso; 4 | 5 | List listaPessoas = []; 6 | 7 | Pessoa({required this.nome, required this.peso}); 8 | 9 | adicionarPessoa(int tipePeso, String tipoNome) { 10 | var novoPessoa = Pessoa( 11 | nome: tipoNome, 12 | peso: tipePeso, 13 | ); 14 | listaPessoas.add(novoPessoa); 15 | 16 | //listaPessoas.add(Pessoa(nome: tipoNome, peso: tipePeso)); 17 | } 18 | 19 | mostrarPessoas() { 20 | for (var pessoas in listaPessoas) { 21 | print('Nome: ${pessoas.nome} - Peso: ${pessoas.peso} Total: ${listaPessoas.length}'); 22 | } 23 | } 24 | 25 | removerPessoa(String nomePessoaRemover) { 26 | for (var pessoas in listaPessoas) { 27 | if (pessoas.nome == nomePessoaRemover) { 28 | listaPessoas.remove(nomePessoaRemover); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/camiseta/main.dart: -------------------------------------------------------------------------------- 1 | import 'camiseta_model.dart'; 2 | 3 | void main() { 4 | var camisetaNike = Camiseta(); 5 | 6 | camisetaNike.tamanho = 'G'; 7 | camisetaNike.marca = 'Nike'; 8 | camisetaNike.cor = 'Azul'; 9 | 10 | print(''' 11 | Camiseta: ${camisetaNike.cor} 12 | Marca: ${camisetaNike.marca} 13 | Tamanho: ${camisetaNike.tamanho} 14 | Tipo de lavagem: ${camisetaNike.tipoLavagem()} 15 | '''); 16 | 17 | //* ---------- Criando outra instância de camiseta ---------- *// 18 | 19 | var camisetaAdidas = Camiseta(); 20 | 21 | camisetaAdidas.tamanho = 'M'; 22 | camisetaAdidas.marca = 'Adidas'; 23 | camisetaAdidas.cor = 'Vermelho'; 24 | 25 | print(''' 26 | Camiseta: ${camisetaAdidas.cor} 27 | Marca: ${camisetaAdidas.marca} 28 | Tamanho: ${camisetaAdidas.tamanho} 29 | Tipo de lavagem: ${camisetaAdidas.tipoLavagem()} 30 | '''); 31 | } 32 | -------------------------------------------------------------------------------- /cursos/exemplos_classes/classe_data.dart: -------------------------------------------------------------------------------- 1 | //classes são como um molde e podem ser reutilizada diversas vezes para o mesmo proposito. 2 | class Data { 3 | //começa com letra maiuscula 4 | late int dia; 5 | late int mes; 6 | late int anos; 7 | } 8 | 9 | main() { 10 | var dataAniversario = new Data(); //invocando o construtor 11 | dataAniversario.dia = 3; 12 | dataAniversario.mes = 10; 13 | dataAniversario.anos = 2020; 14 | 15 | var dataCompra = new Data(); //invocando o construtor 16 | dataCompra.dia = 21; 17 | dataCompra.mes = 12; 18 | dataCompra.anos = 2001; 19 | 20 | // isso tudo serve principalmente para economizar codigo e organizar, como pode ver acima utilizei a mesmas variaveis para 2 tipos de resultados diferentes 21 | print("${dataAniversario.dia} / ${dataAniversario.mes} / ${dataAniversario.anos}"); 22 | print("${dataCompra.dia} / ${dataCompra.mes} / ${dataCompra.anos}"); 23 | } 24 | -------------------------------------------------------------------------------- /desafios/desafio_ramon/exercicio_dois.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final int personOneAge = 5; 3 | final int personTwoAge = 28; 4 | final int personThreeAge = 87; 5 | 6 | ticketPrice(age: personOneAge, isMonday: true); 7 | ticketPrice(age: personTwoAge, isMonday: true); 8 | ticketPrice(age: personThreeAge, isMonday: true); 9 | ticketPrice(age: -1, isMonday: true); 10 | } 11 | 12 | ticketPrice({required int age, required bool isMonday}) { 13 | if (age <= 12 && age > 0) { 14 | print('O valor para idade de $age é: 15'); 15 | } else if (age >= 13 && age <= 60) { 16 | if (isMonday == true) { 17 | print('Hoje é segunda feira e o valor para idade de $age é: 25'); 18 | } else { 19 | print('O valor para idade de $age é: 30'); 20 | } 21 | } else if (age >= 61 && age <= 100) { 22 | print('O valor para idade de $age é: 20'); 23 | } else { 24 | print('A idade $age é inválida!'); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/lista.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | var nomes = ['anas', 'jana', 'natan', 'leonardo', 'bianca']; 3 | var listaNomes = [ 4 | 'natan|12', 5 | 'diana|17', 6 | 'luana|29', 7 | 'ruan|15', 8 | ]; 9 | var numeroAleatorio = [93, 12, 45, 67, 80, 4, 1]; 10 | var numeros = List.generate(10, (index) => index); 11 | // numeros.forEach(print); 12 | 13 | // if(nomes.any((element) => nomes == 'jana')){ // usei como um contains, porém posso usar com logica 14 | // print('tem jana'); 15 | // }else{ 16 | // print('n tem'); 17 | // } 18 | 19 | // if(nomes.every((element) => element.length > 3)){ 20 | // print('todos tem mais de 3 caracteres'); 21 | // }else{ 22 | // print('a palavras menores que 3 caracteres'); 23 | // } 24 | 25 | // nomes.sort(); 26 | // numeroAleatorio.sort(); 27 | 28 | // print(nomes); 29 | // print(numeroAleatorio); 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /cursos/condicionais/switch.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int mes = 8; 3 | 4 | switch(mes) { 5 | case 1: 6 | print("Janeiro."); 7 | break; 8 | case 2: 9 | print("Fevereiro."); 10 | break; 11 | case 3: 12 | print("Março."); 13 | break; 14 | case 4: 15 | print("Abril."); 16 | break; 17 | case 5: 18 | print("Maio."); 19 | break; 20 | case 6: 21 | print("Junho."); 22 | break; 23 | case 7: 24 | print("Julho."); 25 | break; 26 | case 8: 27 | print("Agosto."); 28 | break; 29 | case 9: 30 | print("Setembro."); 31 | break; 32 | case 10: 33 | print("Outubro."); 34 | break; 35 | case 11: 36 | print("Novembro."); 37 | break; 38 | case 12: 39 | print("Dezembro."); 40 | break; 41 | default: 42 | print("Este mês não existe!"); 43 | break; 44 | 45 | } 46 | } 47 | 48 | ////curso alura 16/07/2021 49 | -------------------------------------------------------------------------------- /cursos/solid_cassio/SOLID/O - Principio do Aberto-Fechado/ocp.dart: -------------------------------------------------------------------------------- 1 | // Nossas classes devem ser abertas para extensão, mas fechadas para modificação. 2 | class PagamentoErrado{ 3 | void pagarBoleto() => print('paguei'); 4 | void pagarImposto() => print('paguei'); 5 | } 6 | 7 | abstract class Pagamento { 8 | int valor = 20; 9 | void pagar(); 10 | } 11 | 12 | class PagamentoBoleto extends Pagamento { 13 | @override 14 | void pagar() { 15 | print('Pagando o boleto no valor de $valor'); 16 | } 17 | } 18 | 19 | class PagamentoImposto implements Pagamento { 20 | @override 21 | int valor = 10; 22 | void pagar() { 23 | print('Pagando o imposto no valor de $valor'); 24 | } 25 | 26 | } 27 | 28 | main() { 29 | PagamentoErrado pagamentoErrado = PagamentoErrado(); 30 | pagamentoErrado.pagarBoleto(); 31 | 32 | 33 | // * Certo 34 | Pagamento pagamento = PagamentoBoleto(); 35 | pagamento.pagar(); 36 | pagamento = PagamentoImposto(); 37 | pagamento.pagar(); 38 | } 39 | -------------------------------------------------------------------------------- /novos_conhecimentos/functionFilter2.dart: -------------------------------------------------------------------------------- 1 | List filtrar(List lista, bool Function(double) fn) { 2 | List listaFiltrada = []; 3 | for (double elemento in lista) { 4 | if (fn(elemento)) { //Logica de uma função para filtrar automaticamente. adicionandoe removendo e assim podendo utilizar mais 5 | listaFiltrada.add(elemento); 6 | } 7 | } 8 | return listaFiltrada; 9 | } 10 | 11 | main() { 12 | var notas = [8.3, 8.1, 2.4, 4.5, 9.3, 5.3, 7.5]; 13 | var notasBoasFn = (double nota) => nota >= 7.5; //aqui eu crio uma variavel e aplico a logica nela. 14 | 15 | var somenteNotasBoas = filtrar(notas, notasBoasFn); //aqui eu crio uma variavel e aplico a função de filtrar. 16 | print(somenteNotasBoas); 17 | 18 | var nomes = ['Ana', 'Bia', 'joao', 'gustavo', 'leandro']; 19 | var nomeGrande = (String nome) => nome.length > 5; 20 | 21 | var somenteNomeGrande = filtrar(nomes, nomeGrande); 22 | print(somenteNomeGrande); 23 | } 24 | -------------------------------------------------------------------------------- /testes/other_lista.dart: -------------------------------------------------------------------------------- 1 | 2 | class Pessoa { 3 | String nome; 4 | int idade; 5 | 6 | Pessoa({ 7 | required this.nome, 8 | required this.idade, 9 | }); 10 | } 11 | class Profissao { 12 | int salario; 13 | List pessoas; 14 | 15 | Profissao({ 16 | required this.salario, 17 | required this.pessoas, 18 | }); 19 | } 20 | 21 | void main(List args) { 22 | List lista = List.generate( 23 | 10, 24 | (index) => Profissao( 25 | salario: index * 1000, 26 | pessoas: List.generate( 27 | 10, 28 | (index) => Pessoa( 29 | nome: 'Pessoa $index', 30 | idade: index * 10, 31 | )), 32 | )); 33 | 34 | var listaSalario = []; 35 | 36 | // listaSalario.addAll(lista.map((element) => element.salario)); // retorna salario 37 | for (var element in lista) { 38 | listaSalario.add(element.salario); 39 | } 40 | 41 | 42 | 43 | print(listaSalario); 44 | } 45 | -------------------------------------------------------------------------------- /desafios/desafio_futebol/main.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'jogador.dart'; 3 | 4 | main() { 5 | List listString = ['nome', 'posicao']; 6 | List listInt = ['idade', 'altura', 'peso']; 7 | var jogador = Jogador(); 8 | 9 | for (int cont = 0; cont < listString.length; cont++) { 10 | stdout.write("digite ${listString[cont]}: "); 11 | var valor = stdin.readLineSync(); 12 | if ('nome' == listString[cont]) { 13 | jogador.nome = valor!; 14 | } else { 15 | jogador.posicao = valor!; 16 | } 17 | } 18 | for (int cont = 0; cont < listInt.length; cont++) { 19 | stdout.write("digite ${listInt[cont]}: "); 20 | var entrada = stdin.readLineSync(); 21 | int numero = int.parse(entrada!); 22 | 23 | if ('idade' == listInt[cont]) { 24 | jogador.idade = numero; 25 | } 26 | if ('altura' == listInt[cont]) { 27 | jogador.altura = numero; 28 | } 29 | if ('peso' == listInt[cont]) { 30 | jogador.peso = numero; 31 | } 32 | } 33 | jogador.perguntas(); 34 | } 35 | -------------------------------------------------------------------------------- /desafios/desafio_mercado/produtos.dart: -------------------------------------------------------------------------------- 1 | class Produtos { 2 | String nome; 3 | String tipo; 4 | double valor; 5 | List produtos = []; 6 | List removeList = []; 7 | 8 | Produtos({required this.nome, required this.tipo, required this.valor}); 9 | 10 | adicionarProduto( 11 | String nomeParametro, String tipoParametro, double valorParametro) { 12 | var novoProduto = Produtos( 13 | nome: nomeParametro, 14 | tipo: tipoParametro, 15 | valor: valorParametro, 16 | ); 17 | produtos.add(novoProduto); 18 | } 19 | 20 | mostrarProduto() { 21 | for (var produto in produtos) { 22 | print( 23 | 'Nome: ${produto.nome} - Tipo: ${produto.tipo} - Valor: ${produto.valor}'); 24 | } 25 | } 26 | 27 | removerProduto(String nomeRemover) { 28 | { 29 | for (var product in produtos) { 30 | if (nomeRemover == product.nome) { 31 | removeList.add(product); 32 | } 33 | } 34 | produtos.removeWhere((i) => removeList.contains(i)); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/manipulacao_string.dart: -------------------------------------------------------------------------------- 1 | var sexo = 'Masculino'; 2 | var nome = 'Natan Valim Cardoso'; 3 | var paciente = 'Diana Cardoso|30|Desenvolvedora Mobile|SC'; 4 | var pacientes = [ 5 | 'Diana Cardoso|30|Desenvolvedora Mobile|SC', 6 | 'Natan Valim Cardoso|30|Desenvolvedora Mobile|SC', 7 | 'João Pedro|30|Desenvolvedora Mobile|SC', 8 | 'Maria|30|Desenvolvedora Mobile|SC', 9 | ]; 10 | 11 | void main() { 12 | if (sexo.toLowerCase().startsWith('masc')) { 13 | print('O sexo é masculino'); 14 | } 15 | 16 | if (nome.toLowerCase().contains('valim')) { 17 | print('É da familia valim'); 18 | } 19 | 20 | var dadosPacientes = paciente.split('|'); // O split vai separar de acordo com tipo de caracteres especial que voce passar pra ele 21 | print(dadosPacientes); // e vai retornar uma lista com os dados ja separado. 22 | 23 | for (var paciente in pacientes) { 24 | var dadosPacientesGeral = paciente.split('|'); 25 | var ultimoNome = dadosPacientesGeral[0].split(' '); // separa por espaço 26 | print(ultimoNome.last); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/modelo/carro.dart: -------------------------------------------------------------------------------- 1 | class Carro { 2 | final int velocidadeMaxima; 3 | int _velocidadeAtual = 0; 4 | 5 | Carro([this.velocidadeMaxima = 200]); 6 | 7 | int get velocidadeAtual { 8 | return this._velocidadeAtual; 9 | } 10 | 11 | void set velocidadeAtual(int novaVelocidade) { 12 | bool deltaValido = (_velocidadeAtual - novaVelocidade).abs() <= 5; 13 | if (deltaValido && novaVelocidade >= 0) { 14 | this._velocidadeAtual = novaVelocidade; 15 | } 16 | } 17 | 18 | int acelerar() { 19 | if (_velocidadeAtual + 5 >= velocidadeMaxima) { 20 | _velocidadeAtual = velocidadeMaxima; 21 | } else { 22 | _velocidadeAtual += 5; 23 | } 24 | return _velocidadeAtual; 25 | } 26 | 27 | int frear() { 28 | if (_velocidadeAtual - 5 <= 0) { 29 | _velocidadeAtual = 0; 30 | } else { 31 | _velocidadeAtual -= 5; 32 | } 33 | return _velocidadeAtual; 34 | } 35 | 36 | bool estaNoLimite() { 37 | return _velocidadeAtual == velocidadeMaxima; 38 | } 39 | 40 | bool estaParado() { 41 | return _velocidadeAtual == 0; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_16.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'metodo_read.dart'; 4 | 5 | /*crie um programa que jogue o jogo “vacas e touros” com o usuário. O jogo funciona assim: 6 | 7 | Gere aleatoriamente um número de 4 dígitos. Peça ao usuário para adivinhar um número de 4 dígitos. 8 | Para cada dígito que o usuário acertou no lugar correto, ele tem uma “vaca”. Para cada dígito 9 | que o usuário adivinhou corretamente no lugar errado é um “touro”. 10 | Toda vez que o usuário fizer um palpite, diga quantas “vacas” e “touros” ele tem. Assim que 11 | o usuário adivinhar o número correto, o jogo acaba. Acompanhe o número 12 | de suposições que o usuário faz ao longo do jogo e diga ao usuário no final. 13 | */ 14 | 15 | main() { 16 | final random = Random(); 17 | String randomNumber = (1000 + random.nextInt(9999 - 1000)).toString(); //gera um numero aleatorio de 4 digitos 18 | print(randomNumber); 19 | 20 | while (true) { 21 | print('Digite um número: \nDigite (101) para sair\n'); 22 | int escolhaUsuario = pergunta(0); 23 | 24 | if (escolhaUsuario == 101) { 25 | break; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /cursos/exerc_normais/ex1.dart: -------------------------------------------------------------------------------- 1 | //■■ o total de alunos aprovados; 2 | //■■ o total de alunos de exame; 3 | //■■ o total de alunos reprovados; 4 | //■■ a média da classe. 5 | //Faça um programa que receba duas notas de seis alunos. Calcule e mostre: 6 | 7 | 8 | import 'dart:io'; 9 | 10 | void main() { 11 | var notaAcima = 0; 12 | var notaAbaixo = 0; 13 | var notaExame = 0; 14 | 15 | for (int i = 0; i < 3; i++) { 16 | for (int k = 0; k < 2; k++) { 17 | print("Digite a sua nota: "); 18 | var input = stdin.readLineSync(); 19 | if (input != null) { 20 | var notas = int.parse(input); 21 | 22 | if (notas >= 7) { 23 | notaAcima++; 24 | } else if (notas < 7 && notas > 3) { 25 | notaExame++; 26 | } else { 27 | notaAbaixo++; 28 | } 29 | } 30 | } 31 | } 32 | double media = 0; 33 | media = (notaAcima + notaAbaixo + notaExame / 3); 34 | 35 | print('A quantidade de alunos aprovado é: $notaAcima'); 36 | print('A quantidade de alunos em Exame é: $notaExame'); 37 | print('A quantidade de alunos reprovado é: $notaAbaixo'); 38 | 39 | print('E a média da turma é: $media'); 40 | } 41 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_7.dart: -------------------------------------------------------------------------------- 1 | /*Digamos que você receba uma lista salva em uma variável: 2 | a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]. 3 | Escreva um código Dart que pegue essa lista e crie uma nova lista 4 | que contenha apenas os elementos pares dessa lista.*/ 5 | 6 | import 'dart:convert'; 7 | 8 | main() { 9 | List lista = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]; 10 | 11 | var clone = clonaLista(lista); 12 | var listaNumerosParesClonada = converterPar(clone); 13 | print(listaNumerosParesClonada); 14 | } 15 | 16 | // funções que eu criei 17 | 18 | clonaLista(List lista) { 19 | var listClone = [...lista]; 20 | return listClone; 21 | } 22 | 23 | // converterPar(List lista) { 24 | // var listaNumerosPares = []; 25 | // for (var i = 0; i < lista.length; i++) { 26 | // if (lista[i] % 2 == 0) { 27 | // listaNumerosPares.add(lista[i]); 28 | // } 29 | // } 30 | // return listaNumerosPares; 31 | // } 32 | 33 | /////////////////////////// 34 | 35 | converterPar(List lista) { 36 | var listaNumerosPares = []; 37 | for (var item in lista) { 38 | if (item % 2 == 0) { 39 | listaNumerosPares.add(item); 40 | } 41 | } 42 | return listaNumerosPares; 43 | } 44 | 45 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_9.dart: -------------------------------------------------------------------------------- 1 | /*Gere um número aleatório entre 1 e 100. Peça ao usuário para adivinhar o número e 2 | diga se ele adivinhou muito baixo, muito alto ou exatamente certo. 3 | 4 | Acompanhe quantos palpites o usuário fez e, quando o jogo terminar, imprima isso. 5 | */ 6 | import 'dart:math'; 7 | 8 | import 'metodo_read.dart'; 9 | 10 | main() { 11 | final random = Random(); 12 | int numeroAleatorio = random.nextInt(100); 13 | int chutesUsuario = 0; 14 | 15 | while (true) { 16 | print('Digite um número: \nDigite (101) para sair\n'); 17 | int escolhaUsuario = pergunta(0); 18 | chutesUsuario++; 19 | if (escolhaUsuario == 101) { 20 | print( 21 | "\nVocê teve um total de $chutesUsuario chutes"); //forma para para o true 22 | break; 23 | } 24 | 25 | if (numeroAleatorio == escolhaUsuario) { 26 | chutesUsuario++; 27 | print( 28 | '\nVocê acertou!!! o número era $numeroAleatorio e \nVocê teve um total de $chutesUsuario chutes até acertar'); 29 | break; 30 | } 31 | if (numeroAleatorio > escolhaUsuario) { 32 | print("\nO número aleátorio é maior"); 33 | } else { 34 | print("\nO número aleátorio é menor"); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/dart_async/future_then.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | processoComErros() 3 | .then((mensagem) => print('O resultado é: $mensagem')) 4 | .catchError((erro) => print('erro ao executar o processo')); 5 | 6 | processoComErros() 7 | .then((mensagem) { 8 | 9 | try { 10 | throw Exception(); 11 | print('O resultado é: $mensagem'); 12 | } catch (e) { 13 | print('Ocorreu um erro dentro do then'); 14 | } 15 | } ) 16 | .catchError((erro) => print('erro ao executar o processo')); 17 | 18 | } 19 | 20 | //// - Functions //// 21 | 22 | Future processoSemRetorno() async { 23 | print('Inicio do P2'); 24 | Future.delayed(Duration(seconds: 3), () { 25 | var i = 0; 26 | while (i < 3) { 27 | print(i); 28 | i++; 29 | } 30 | print('fim do P2'); 31 | }); 32 | } 33 | 34 | /// Um metodo futuro com dados 35 | Future processoComDados() { 36 | print('Inicio P3'); 37 | return Future.delayed(Duration(seconds: 3), () => 'Fim do processo P3'); 38 | } 39 | 40 | /// Um metodo futuro com erro 41 | Future processoComErros() { 42 | print('Inicio P4'); 43 | return Future.delayed(Duration(seconds: 3), () => throw Exception()); 44 | } 45 | -------------------------------------------------------------------------------- /desafios/desafio_udemy/teste/teste_venda.dart: -------------------------------------------------------------------------------- 1 | import '../modelo/cliente.dart'; 2 | import '../modelo/venda.dart'; 3 | import '../modelo/venda_item.dart'; 4 | import '../modelo/produto.dart'; 5 | 6 | main() { 7 | var vendaItem1 = VendaItem( 8 | quantidade: 30, 9 | produto: Produto( 10 | codigo: 1, 11 | nome: 'Lapis Preto', 12 | preco: 6.00, 13 | desconto: 0.5, 14 | ), 15 | ); 16 | 17 | var venda = Venda( 18 | cliente: new Cliente( 19 | nome: 'Francisco Cardoso', 20 | cpf: '123.456.789-00', 21 | ), 22 | itens: [ 23 | vendaItem1, 24 | VendaItem( 25 | quantidade: 20, 26 | produto: Produto( 27 | codigo: 123, 28 | nome: 'Caderno', 29 | preco: 20.00, 30 | desconto: 0.25, 31 | ), 32 | ), 33 | VendaItem( 34 | quantidade: 100, 35 | produto: Produto( 36 | codigo: 52, 37 | nome: 'Borracha', 38 | preco: 2.00, 39 | desconto: 0.5, 40 | ), 41 | ), 42 | ], 43 | ); 44 | 45 | print("O valor total da venda é: R\$${venda.valorTotal}"); 46 | print("Nome do primeiro produto é: ${venda.itens[0].produto!.nome}"); 47 | print("O CPF do cliente é: ${venda.cliente!.cpf}"); 48 | } 49 | -------------------------------------------------------------------------------- /cursos/abstract_factory/bebida.dart: -------------------------------------------------------------------------------- 1 | abstract class Bebida{ 2 | 3 | void congelar( ); 4 | void mexer(); 5 | } 6 | 7 | //* -------------------------------------------------- ||| -------------------------------------------------- *// 8 | 9 | ///Classe concreta 10 | class Refrigerante extends Bebida{ 11 | @override 12 | void congelar() { 13 | print('Congelando Refrigerante'); 14 | } 15 | @override 16 | void mexer() { 17 | print('Mexendo Refrigerante'); 18 | } 19 | } 20 | ///Classe concreta 21 | class Cafe extends Bebida{ 22 | @override 23 | void congelar() { 24 | print('Congelando Agua'); 25 | } 26 | @override 27 | void mexer() { 28 | print('Mexendo Agua'); 29 | } 30 | } 31 | 32 | //* -------------------------------------------------- ||| -------------------------------------------------- *// 33 | 34 | abstract class BebidaFactory{ 35 | Bebida criarBebida(); 36 | } 37 | 38 | class Pub implements BebidaFactory{ 39 | @override 40 | Bebida criarBebida() { 41 | return Refrigerante(); 42 | } 43 | } 44 | 45 | class Cafeteria implements BebidaFactory{ 46 | @override 47 | Bebida criarBebida() { 48 | return Cafe(); 49 | } 50 | } 51 | 52 | //* -------------------------------------------------- ||| -------------------------------------------------- *// 53 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/poo/conversões/json_aluno.dart: -------------------------------------------------------------------------------- 1 | import 'aluno.dart'; 2 | import 'curso.dart'; 3 | 4 | void main() { 5 | var alunoAdf = { 6 | 'nome': 'Adriano', 7 | 'curso': [ 8 | { 9 | 'nome': 'ADS', 10 | 'descricao': '20 horas', 11 | }, 12 | { 13 | 'nome': 'Ciencias', 14 | 'descricao': '12 horas', 15 | }, 16 | { 17 | 'nome': 'imersao', 18 | 'descricao': '120 horas', 19 | } 20 | ] 21 | }; 22 | 23 | final cursosMap = alunoAdf['curso'] as List>; // primeiro entrei no curso e peguei o mapa 24 | final cursos = cursosMap.map((curso) { // Depois mapeio a minha lista que esta dentro do curso map 25 | 26 | var nome = curso['nome'] as String; // entro no primeiro key do map e recebo o valor 27 | var descricao = curso['descricao'] as String; // entro na segunda key do map e pego o valor 28 | 29 | return Curso(nome: nome, descricao: descricao); // Com a minha classe criada eu recebo os dados do map 30 | }).toList(); // preciso converte para lista pois ele retorna um iterable 31 | 32 | final nomeAluno = alunoAdf['nome'] as String; // peguei o nome do map 33 | final aluno = Aluno(nome: nomeAluno, cursos: cursos); 34 | 35 | 36 | print(aluno); 37 | 38 | } -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/maps.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | final paciente = { 3 | 'nome': 'João', 4 | 'idade': 20, 5 | 'sexo': null 6 | }; 7 | var produtos = {}; 8 | 9 | produtos.putIfAbsent('nome', () => 'abacaxi'); 10 | produtos.putIfAbsent('idade', () => '21'); 11 | paciente.update('nome', (value) => 'diana'); 12 | 13 | //* Não aceita assincrono 14 | produtos.forEach((key, value) { 15 | // O foreach não aceita nada assincrono e pra resolver tem quer ser com ForIn 16 | print('A chavé é: $key e o value: $value'); 17 | }); 18 | 19 | //* Aceita assincrono 20 | for (var element in produtos.entries) { 21 | print('chave: ${element.key} e Valor: ${element.value}'); 22 | } 23 | 24 | for (var key in produtos.keys) { 25 | print('Todas key: $key'); 26 | } 27 | 28 | //* Mapa dentro de mapa 29 | var novoMapaProduto = produtos.map((key, value) { 30 | return MapEntry(key, value.toUpperCase()); 31 | }); 32 | 33 | //* Mapa com partes maiores 34 | var mapa = { 35 | 'nome': 'natan', 36 | 'curso': [ 37 | { 38 | 'nome': 'academia do flutter', 39 | 'descriç': 'muito bom', 40 | }, 41 | { 42 | 'nome': 'masterclass', 43 | 'descriç': 'muito bom', 44 | } 45 | ] 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/lista_manipuladores/desafio_um.dart: -------------------------------------------------------------------------------- 1 | import 'manipulacao_string.dart'; 2 | 3 | main() { 4 | var pacientes = [ 5 | 'Rodrigo Rahman|35|desenvolvedor|SP', 6 | 'João Pedro|10|desenvolvedor|SC', 7 | 'José Silva|25|estudante|SP', 8 | 'Maria Joaquina|5|desenvolvedor|SP', 9 | 'Luana|3|estudante|SC', 10 | 'Lucas|5|desenvolvedor|SP', 11 | 'Luciana|30|estudante|SC', 12 | 'Luciana|estudante|SC', 13 | ]; 14 | 15 | List lista = ['luan', 'ana', 'carla']; 16 | print('Os nomes são: ${lista.join(' - ')}'); 17 | // for (var paciente in pacientes) { 18 | // final dadosPacientesGeral = paciente.split('|'); 19 | // final idade = int.tryParse(dadosPacientesGeral[1]) ?? 0; 20 | // if (idade > 20) { 21 | // print(dadosPacientesGeral[0]); 22 | // } 23 | // } 24 | 25 | final desenvolvedor = []; 26 | final estudante = []; 27 | 28 | for (var paciente in pacientes) { 29 | final dadosPacientesGeral = paciente.split('|'); 30 | if (dadosPacientesGeral[2].toLowerCase().contains('desenvolvedor')) { 31 | desenvolvedor.add(dadosPacientesGeral[0]); 32 | } else { 33 | estudante.add(dadosPacientesGeral[0]); 34 | } 35 | } 36 | print( 37 | 'Os desenvolvedores são um total de: ${desenvolvedor.length} e eles são: ${desenvolvedor.join(', ')}'); 38 | print( 39 | 'Os desenvolvedores são um total de: ${estudante.length} e eles são: ${estudante.join(', ')}'); 40 | } 41 | -------------------------------------------------------------------------------- /novos_conhecimentos/Objetos1.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | ContaCorrente contaAmanda = ContaCorrente(); 3 | contaAmanda.titular = "Amanda"; 4 | contaAmanda.agencia = 123; 5 | contaAmanda.conta = 1; 6 | 7 | print('Titular: ${contaAmanda.titular}'); 8 | print('Agencia: ${contaAmanda.agencia}'); 9 | print('Saldo: ${contaAmanda.saldo}'); 10 | 11 | ContaCorrente contaTiago = ContaCorrente(); 12 | contaTiago.titular = "Tiago"; 13 | contaTiago.conta = 2; 14 | 15 | print('Titular: ${contaTiago.titular}'); 16 | print('Agencia: ${contaTiago.agencia}'); //estudar more 17 | print('Saldo: ${contaTiago.saldo}'); 18 | } 19 | 20 | class ContaCorrente { 21 | String titular = ''; // 22 | int agencia = 145; // 23 | int conta = 0; //Importante inicializar os as nossa variaveis com algum valor. 24 | double saldo = 30.0; // 25 | } 26 | 27 | ///////////////////////////// 28 | 29 | /* void main() { 30 | ContaCorrente conta1 = ContaCorrente(); 31 | ContaCorrente conta2 = ContaCorrente(); 32 | 33 | conta1.titular = "Natan"; 34 | conta1.agencia = 123; 35 | conta1.conta = 1; 36 | 37 | conta2.titular = "Natan"; 38 | conta2.agencia = 123; 39 | conta2.conta = 1; 40 | 41 | print(conta1.titular == conta2.titular); 42 | 43 | } 44 | 45 | class ContaCorrente { 46 | String titular = ''; // 47 | int agencia = 145; // 48 | int conta = 0; //Importante inicializar os as nossa variaveis com algum valor. 49 | double saldo = 30.0; // 50 | }*/ 51 | -------------------------------------------------------------------------------- /novos_conhecimentos/basicClass2.dart: -------------------------------------------------------------------------------- 1 | class Pessoa { 2 | String nome = ''; 3 | int idade = 0; //cria classe. 4 | double altura = 0; 5 | 6 | void dormir() { 7 | print( 8 | " $nome está dormindo!"); //cria função(metodo), toda classe precisa de um método. 9 | } 10 | 11 | void aniversario() { 12 | idade++; 13 | } 14 | } 15 | 16 | void main() { 17 | //função principal e é obrigatória. 18 | 19 | Pessoa pessoa1 = 20 | Pessoa(); //Declarando um objeto. e é a mesma coisa que declarar uma variavél: ( String pessoa = "valor"; ) 21 | 22 | pessoa1.nome = "João"; //acesando o nome da pessoa1 e atribuindo 23 | pessoa1.idade = 21; //acesando a idade da pessoa1 e atribuindo 24 | pessoa1.altura = 1.80; //acesando a altura da pessoa1 e atribuindo 25 | 26 | Pessoa pessoa2 = Pessoa(); //Declarando a segunda pessoa. 27 | 28 | pessoa2.nome = "Diana"; //acesando o nome da pessoa2 e atribuindo 29 | pessoa2.idade = 35; //acesando a idade da pessoa2 e atribuindo 30 | pessoa2.altura = 1.50; //acesando a altura da pessoa2 e atribuindo 31 | 32 | print(pessoa1.nome + "\n"); 33 | print(pessoa2.nome); //aqui ele puxou pois não tinha um void (função). 34 | 35 | print(pessoa1.idade); //aqui puxou somente o valor da variavél. 36 | pessoa1 37 | .aniversario(); //aqui ele puxou a função pra dentro da main, assim alterando o valor da idade. 38 | print(pessoa1.idade); 39 | 40 | pessoa2.aniversario(); 41 | print(pessoa2.idade); 42 | } 43 | -------------------------------------------------------------------------------- /desafios/desafio_mercado/main.dart: -------------------------------------------------------------------------------- 1 | //* Criar um supermercado com um array de produtos que possui os seguintes atributos: nome, preço, tipo. e ter a função adicionar produto que adiciona um novo produto ao array. 2 | //* verificar se o produto existe, mostrar todos produtos de acordo com o tipo a opção remover produto 3 | // ignore_for_file: unused_local_variable, unused_element// 4 | // terminar 5 | import 'dart:io'; 6 | import 'funcoes.dart'; 7 | import 'produtos.dart'; 8 | 9 | main() { 10 | int saida = 0; 11 | var produtos = Produtos(nome: '', tipo: '', valor: 0.0); 12 | 13 | 14 | 15 | do { 16 | print('Digite a sua operação: (Adicionar: 1) - (Remover: 2) - (Listar: 3) - (sair: 4)\n'); 17 | var entrada = stdin.readLineSync(); 18 | int numero = int.parse(entrada!); 19 | saida = numero; 20 | 21 | switch (numero) { 22 | case 1: 23 | print('Digite o nome do produto: '); 24 | String nome = pergunta(''); 25 | print('Digite o tipo do produto: '); 26 | String tipo = pergunta(''); 27 | print('Digite o valor do produto: '); 28 | double valor = pergunta(0.0); 29 | produtos.adicionarProduto(nome, tipo, valor); 30 | break; 31 | case 2: 32 | print('Digite o nome do produto que quer remover| '); 33 | String nome = pergunta(''); 34 | produtos.removerProduto(nome); 35 | break; 36 | case 3: 37 | produtos.mostrarProduto(); 38 | break; 39 | case 4: 40 | } 41 | } while (saida != 4); 42 | } 43 | -------------------------------------------------------------------------------- /cursos/exerc_normais/ex5.dart: -------------------------------------------------------------------------------- 1 | /* Faça um programa que receba a idade, a altura e o peso de 3 pessoas, calcule e mostre: 2 | ■■ a quantidade de pessoas com idade superior a 50 anos; 3 | ■■ a média da idade das pessoas com idade entre 10 e 20 anos; 4 | ■■ a porcentagem de pessoas com peso inferior a 40 kg entre todas as pessoas analisadas. */ 5 | 6 | import 'dart:io'; 7 | 8 | int idadeMaior = 0; 9 | int mediaIdade = 0; 10 | double totalIdade = 0; 11 | int peso = 0; 12 | double pesoTotal = 0; 13 | int divisao = 0; 14 | void main() { 15 | for (int i = 0; i < 3; i++) { 16 | print('Qual a sua idade: '); 17 | var input = stdin.readLineSync(); 18 | 19 | if (input != null) { 20 | var numero = int.parse(input); 21 | 22 | if (numero >= 50) { 23 | idadeMaior++; 24 | } 25 | if (numero >= 10 && numero <= 20) { 26 | var numeroTotal = numero; 27 | divisao++; 28 | mediaIdade = (numeroTotal + mediaIdade); 29 | totalIdade = (mediaIdade / divisao); 30 | } 31 | } 32 | 33 | print('Qual o seu peso: '); 34 | var input2 = stdin.readLineSync(); 35 | 36 | if (input2 != null) { 37 | var numero2 = int.parse(input2); 38 | 39 | if (numero2 < 40) { 40 | peso++; 41 | pesoTotal = (peso *(100 / 3)); 42 | } 43 | } 44 | } 45 | print(' A quantidade de pessoas com idade superior a 50 anos é: $idadeMaior'); 46 | print(' A média da idade das pessoas com idade entre 10 e 20 anos é: $totalIdade'); 47 | print(' A porcentagem de pessoas com peso inferior a 40 kg entre todas as pessoas analisadas é de: $pesoTotal%'); 48 | } 49 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_15.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Escreva um gerador de senhas no Dart. Seja criativo com a forma como você gera senhas - 3 | senhas fortes têm uma mistura de letras minúsculas, letras maiúsculas, números e símbolos. 4 | As senhas devem ser aleatórias, gerando uma nova senha toda vez que o usuário solicitar 5 | uma nova senha. Inclua seu código de tempo de execução em um método principal. 6 | 7 | Pergunte ao usuário o quão forte ele quer que sua senha seja. Para senhas fracas, 8 | escolha uma ou duas palavras de uma lista. 9 | */ 10 | 11 | import 'dart:convert'; 12 | import 'dart:math'; 13 | import 'metodo_read.dart'; 14 | 15 | void main() { 16 | // print("How strong a password do you want? Weak, Medium or Strong: "); 17 | // String password = pergunta(''); 18 | 19 | // passwordGenerator(password); 20 | 21 | final String password = 'A,B,C,D,E,F'; 22 | var lista = password.split(','); // transforma a string em um array e coloquei o separador como ',' 23 | lista.shuffle(); // embaralha a lista 24 | 25 | print(lista.join('')); // Junta todos os elementos da lista 26 | 27 | } 28 | 29 | void shuffleGenerator(int strength) { 30 | final random = Random.secure(); 31 | List intList = List.generate(strength, (_) => random.nextInt(255)); 32 | List charList = base64UrlEncode(intList).split('').toList(); 33 | charList.shuffle(); 34 | print("\nYour password is: ${charList.join('')}\n"); 35 | } 36 | 37 | void passwordGenerator(String strength) { 38 | if (strength == "weak") { 39 | shuffleGenerator(5); 40 | } else if (strength == "medium") { 41 | shuffleGenerator(15); 42 | } else if (strength == "strong") { 43 | shuffleGenerator(25); 44 | } else { 45 | print("Incorrect word is given"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /desafios/desafio_hackmd/exercicio_8.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'dart:math'; 3 | import 'metodo_read.dart'; 4 | 5 | // Faça um jogo de Pedra-Papel-Tesoura para um jogador contra o computador(usar Random()), o usúario deve digitar 6 | //"exit" para sair do algoritmo, deve ter um pontuador de pontos e printar assim que o usuário sair da partida, 7 | void main() { 8 | print("Bin coming to Pedra Paper Scissors \ n Write (exit) to leave the game"); 9 | final random = Random(); 10 | 11 | Map regras = { 12 | "stone": "tessoura", 13 | "tessoura": "papel", 14 | "papel": "pedra" 15 | }; 16 | 17 | int eu = 0; 18 | int computador = 0; 19 | 20 | List opcoes = ['pedra', 'tessoura', 'paper']; 21 | 22 | while (true) { 23 | String escolhasComputador = opcoes[random.nextInt(opcoes.length)]; 24 | stdout.write("\n Escolha entre: pedra, tessoura, papel "); 25 | String escolhaUsuario = pergunta(''); 26 | 27 | if (escolhaUsuario == "exit") { 28 | print("\nYou: $eu Computer: $computador"); //forma para para o true 29 | break; 30 | } 31 | 32 | if (!opcoes.contains(escolhaUsuario)) { 33 | print("digite novamente"); 34 | continue; //forma de repetir o laço sem sair 35 | } else if (escolhasComputador == escolhaUsuario) { 36 | print("Empatou!"); 37 | } else if (regras[escolhasComputador] == escolhaUsuario) { // dentro do map o pc escolheu tessoura : papel e usuario papel o computador win, pois ele compara a key 38 | print("Computer wins: $escolhasComputador vs $escolhaUsuario"); 39 | computador += 1; 40 | } else if (regras[escolhaUsuario] == escolhasComputador) { 41 | print("You win: $escolhaUsuario vs $escolhasComputador"); 42 | eu += 1; 43 | } 44 | } 45 | } 46 | // reposta do site 47 | -------------------------------------------------------------------------------- /cursos/exerc_normais/ex7.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | void main() { 4 | bool condicao; 5 | double valor = 0; 6 | var parcela = 0; 7 | double valor6 = 0; 8 | double valor12 = 0; 9 | double valor18 = 0; 10 | 11 | print( 12 | 'O Preço à vista sai com 20% de desconto ou parcelado com acréscimo \n'); 13 | print('Qual é o valor do carro: '); 14 | var input = stdin.readLineSync(); 15 | if (input != null) { 16 | var numero = int.parse(input); 17 | 18 | stdout.write("O pagamento vai ser à vista? [sim / nao] ?"); 19 | var avista = stdin.readLineSync(); 20 | 21 | if (avista == 'sim') { 22 | condicao = true; 23 | } else { 24 | condicao = false; 25 | } 26 | 27 | if (condicao == true) { 28 | valor = (numero * 0.20) * 4; 29 | print('O valor do carro é de $valor'); 30 | } else { 31 | print( 32 | 'Digite o número da parcela 6 = 5%, 12 = 10%, 18 = 15%. Exemplo: Quero 6 parcela digite 6. \n\n'); 33 | print('Quantas parcelas 6, 12, 18. : '); 34 | var input1 = stdin.readLineSync(); 35 | if (input1 != null) { 36 | var parcela = int.parse(input1); 37 | 38 | switch (parcela) { 39 | case 6: 40 | valor6 = (numero + (numero * 0.05) )/ parcela + numero; 41 | print('Em 6 parcelas o valor é: $valor6 a parcela'); 42 | break; 43 | case 12: 44 | valor12 = (numero + (numero * 0.10) )/ parcela + numero; 45 | print('Em 12 parcelas o valor é: $valor12 a parcela'); 46 | break; 47 | case 18: 48 | valor18 = (numero + (numero * 0.15) )/ parcela + numero; 49 | print('Em 18 parcelas o valor é: $valor18 a parcela'); 50 | break; 51 | } 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /desafios/desafio_futebol/jogador.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | class Jogador { 4 | String nome = ''; 5 | String posicao = ''; 6 | int idade = 0; 7 | int altura = 0; 8 | int peso = 0; 9 | 10 | mostrarDadosJogadores() { 11 | print(' Nome: $nome \n Posição: $posicao \n Idade: $idade \n Altura: $altura \n Peso: $peso \n'); 12 | } 13 | 14 | calcularAposentadoria() { 15 | switch (posicao) { 16 | case 'atacante': 17 | if (idade >= 35) { 18 | print('Jogador aposentado'); 19 | } else { 20 | print('Pode jogar bola ainda!'); 21 | } 22 | break; 23 | case 'defesa': 24 | if (idade >= 40) { 25 | print('Jogador aposentado'); 26 | } else { 27 | print('Pode jogar bola ainda!'); 28 | } 29 | break; 30 | case 'meia': 31 | if (idade >= 38) { 32 | print('Jogador aposentado'); 33 | } else { 34 | print('Pode jogar bola ainda!'); 35 | } 36 | } 37 | } 38 | 39 | perguntas() { 40 | int numero = 0; 41 | do { 42 | print("\nDigite 1 para mostrar o jogador:\nDigite 2 para testar idade: "); 43 | var entrada = stdin.readLineSync(); 44 | numero = int.parse(entrada!); 45 | 46 | if (numero == 1) { 47 | mostrarDadosJogadores(); 48 | } else if (numero == 2) { 49 | calcularAposentadoria(); 50 | } else { 51 | print('Numero incorreto digite 1 ou 2 e para sair 99'); 52 | } 53 | } while (numero != 99); 54 | } 55 | } 56 | 57 | 58 | /* 59 | int lerInteiro(String nomeVariavel){ 60 | print("digite $nomeVariavel: "); 61 | var entrada = stdin.readLineSync(); 62 | int numero = int.parse(entrada!); 63 | return numero; 64 | } 65 | lerString(String nomeVariavel){ 66 | stdout.write('digite $nomeVariavel'); 67 | var nome = stdin.readLineSync(); 68 | return nome; 69 | } */ -------------------------------------------------------------------------------- /cursos/exerc_normais/ex2.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | //Em um campeonato de um jogo existem um time de 3 jogadores. Faça um progra- 4 | //ma que receba a idade, o peso e a altura de cada um dos jogadores, calcule e mostre: 5 | //■■ a quantidade de jogadores com idade inferior a 18 anos; 6 | //■■ a média das idades dos jogadores de cada time; 7 | //■■ a média das alturas de todos os jogadores do campeonato; e 8 | //■■ a porcentagem de jogadores com mais de 80 kg entre todos os jogadores do campeonato. 9 | 10 | void main() { 11 | int numPeso = 0; 12 | int numIdade = 0; 13 | 14 | double mediaIdade = 0; 15 | double mediaAltura = 0; 16 | double mediaPeso = 0; 17 | double totalIdade = 0; 18 | double totalAltura = 0; 19 | 20 | for (int i = 0; i < 3; i++) { 21 | print('Qual a idade dos jogadores:'); 22 | var input = stdin.readLineSync(); 23 | if (input != null) { 24 | var idades = int.parse(input); 25 | 26 | if (idades < 18) { 27 | numIdade++; 28 | } 29 | totalIdade = (totalIdade + idades); 30 | } 31 | print('Qual altura dos jogadores:'); 32 | var input1 = stdin.readLineSync(); 33 | if (input1 != null) { 34 | var alturas = int.parse(input1); 35 | totalAltura = (totalAltura + alturas); 36 | } 37 | print('Qual o peso dos jogadores:'); 38 | var input2 = stdin.readLineSync(); 39 | if (input2 != null) { 40 | var pesos = int.parse(input2); 41 | 42 | if (pesos >= 80) { 43 | numPeso++; 44 | } 45 | } 46 | 47 | mediaIdade = (totalIdade / 3); 48 | mediaAltura = (totalAltura / 3); 49 | mediaPeso = (numPeso / 3 * 100); 50 | } 51 | 52 | print('A quantidade de jogadores com a idade inferior a 18 anos é: $numIdade'); 53 | print('A média da idades dos jogadores é: $mediaIdade'); 54 | print('A média das alturas de todos os jogadores é: $mediaAltura'); 55 | print('A porcentagem de jogadores com mais de 80 kg é: $mediaPeso'); 56 | } 57 | -------------------------------------------------------------------------------- /desafios/desafio_banco/main.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'Conta_imposto.dart'; 3 | 4 | main() { 5 | var valorFinal = 0.0; //S 6 | var saida; 7 | ContaImposto contaImposto = ContaImposto( 8 | percentualImposto: 0, 9 | saldo: 0, 10 | sacarValor: 0.0, 11 | depositarValor: 0.0, 12 | ); 13 | 14 | do { 15 | print( 16 | 'Digite a sua operação: (sacar: 1) - (depositar: 2) - (saldo: 3) - (imposto: 4) - (sair: 5)\n'); 17 | var entrada = stdin.readLineSync(); 18 | int numero = int.parse(entrada!); 19 | saida = numero; 20 | 21 | switch (numero) { 22 | case 1: 23 | print('\nDigite o valor que você quer sacar:'); 24 | double sacar = pergunta(0.0); 25 | contaImposto.sacarValor = sacar; 26 | break; 27 | case 2: 28 | print('\nDigite o valor que você quer depositar:'); 29 | double depositar = pergunta(0.0); 30 | contaImposto.depositarValor = depositar; 31 | contaImposto.depositar(); 32 | print( 33 | "Voce depositou: $depositar e agora tem no saldo um total de: ${contaImposto.saldo}"); 34 | break; 35 | case 3: 36 | print('\nSeu saldo é: ${contaImposto.saldo}'); 37 | break; 38 | case 4: 39 | print('\nDigite a quantidade de impostos que você recebeu:'); 40 | double impostosPergunta = pergunta(0.0); 41 | contaImposto.percentualImposto = impostosPergunta; 42 | contaImposto.calcularImposto(); 43 | print( 44 | "O imposto aplicado foi de $impostosPergunta% e o total do seu saldo é de: ${contaImposto.saldo}"); 45 | } 46 | } while (saida != 5); 47 | } 48 | 49 | pergunta(Object valor) { 50 | var entrada = stdin.readLineSync(); 51 | if (valor is int) { 52 | int chamado = int.parse(entrada!); 53 | valor = chamado; 54 | } else if (valor is double) { 55 | double chamado = double.parse(entrada!); 56 | valor = chamado; 57 | } else if (valor is String) { 58 | String chamado = (entrada!).toString(); 59 | valor = chamado; 60 | } 61 | return valor; 62 | } 63 | -------------------------------------------------------------------------------- /desafios/outros/treino_avançado.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: public_member_api_docs, sort_constructors_first 2 | import 'treino_intermediario.dart'; 3 | 4 | //* ----------------------/ Classe Animal /---------------------- *// 5 | 6 | class Animal { 7 | final String name; 8 | final int age; 9 | final String sexo; 10 | final TipoAnimal tipoAnimal; 11 | 12 | Animal( 13 | this.name, 14 | this.age, 15 | this.sexo, 16 | this.tipoAnimal, 17 | ); 18 | } 19 | 20 | class TipoAnimal { 21 | final String tipo; 22 | final String cor; 23 | 24 | TipoAnimal(this.tipo, this.cor); 25 | } 26 | 27 | void main() { 28 | List listAnimal = [ 29 | Animal('Rex', 10, 'Macho', TipoAnimal('canino', 'branco')), 30 | Animal('Miau', 5, 'Femea', TipoAnimal('felino', 'preto')), 31 | Animal('Piu', 2, 'Femea', TipoAnimal('ave', 'verde')), 32 | Animal('Gargamel', 5, 'Femea', TipoAnimal('felino', 'marrom')), 33 | Animal('Bird', 13, 'MACHO', TipoAnimal('ave', 'AZul')), 34 | Animal('Bob', 2, 'mACHO', TipoAnimal('canino', 'preto')), 35 | Animal('Bella', 14, 'FEMEA', TipoAnimal('canino', 'branco')), 36 | Animal('Bolinha', 1, 'FEMEA', TipoAnimal('ave', 'verde')), 37 | Animal('Luna', 3, ' macho', TipoAnimal('felino', 'marrom')), 38 | Animal('Raio', 15, ' macho', TipoAnimal('ave', 'vermelha')), 39 | ]; 40 | 41 | //* Descobrir a quantos tipos de animais tem 42 | 43 | var listaTipoAnimal = listAnimal.map((animal) => animal.tipoAnimal.tipo.toLowerCase()).toSet(); 44 | listaTipoAnimal.forEach((tipos) { 45 | // print(tipos); 46 | }); 47 | 48 | //*Descobrir os nomes das aves com cor verde 49 | 50 | var listaAves = 51 | listAnimal.where((aves) => aves.tipoAnimal.cor.toLowerCase() == 'verde').forEach((aves) { 52 | // print(aves.name); 53 | }); 54 | 55 | //* Criar um método para retornar uma lista com os nomes dos animais de acordo com tipo 56 | verAnimais(String tipo) { 57 | List newLista = []; 58 | listAnimal.where((animal) => animal.tipoAnimal.tipo == tipo).forEach((element) { 59 | newLista.add(element.name); 60 | }); 61 | return newLista; 62 | } 63 | 64 | var lista = verAnimais('canino'); 65 | print(lista); 66 | 67 | //* 68 | } 69 | -------------------------------------------------------------------------------- /desafios/outros/treino_basico.dart: -------------------------------------------------------------------------------- 1 | main() { 2 | var lista = [ 3 | 'joão', 4 | 'maria', 5 | 'pedro', 6 | 'jose', 7 | 'marcos', 8 | 'Janaina', 9 | 'Luana', 10 | 'Luana', 11 | 'jose', 12 | 'Ana', 13 | 'brunão', 14 | 'Carlinhos' 15 | ]; 16 | 17 | // //* Desafio 1 - Imprimir a lista de nomes com a primeira letra J 18 | // var listaComNomesLetraJ = lista.where((nomes) => nomes.toLowerCase().startsWith('j')); 19 | // print(listaComNomesLetraJ); 20 | // //* Desafio 2 - Imprimir a lista de nomes com o tamanho maior ou igual a 5 21 | // var listaComNomesMaior5 = lista.where((nomes) => nomes.length >= 5); 22 | // print(listaComNomesMaior5); 23 | // //* Desafio 3 - retornar a lista de nomes que possui a letra o no final 24 | // var listaComNomesComFinalO = lista.where((nomes) => nomes.toLowerCase().endsWith('o')); 25 | // print(listaComNomesComFinalO); 26 | // //* Desafio 4 - retornar a lista de nomes que possui a letra 27 | // var listaComNomesComLetraA = lista.where((nomes) => nomes.toLowerCase().contains('a')); 28 | // print(listaComNomesComLetraA); 29 | // //* Desafio 5 - retornar a lista sem os nomes repetidos 30 | // var listaSemRepetidos = lista.toSet(); 31 | // print(listaSemRepetidos); 32 | //* Desafio 6 - retornar a lista de nomes com a primeira letra maiuscula 33 | // String capitalize(String text) => text[0].toUpperCase() + text.substring(1); 34 | // var newList = []; 35 | // for (var element in lista) { 36 | // newList.add(capitalize(element)); 37 | // } 38 | // print(newList); 39 | //* Desafio 7 - retornar uma lista com os nomes em ordem alfabetica 40 | // var novaLista = []; 41 | // for (var element in lista) { 42 | // novaLista.add(element.toLowerCase()); 43 | // } 44 | // novaLista.sort(); 45 | // print(novaLista); 46 | 47 | //* Desafio 8 - retornar uma lista com os nomes em ordem alfabetica inversa 48 | // var novaLista = []; 49 | // for (var element in lista) { 50 | // novaLista.add(element.toLowerCase()); 51 | // } 52 | // novaLista.sort(); 53 | // novaLista = novaLista.reversed.toList(); 54 | // print(novaLista); 55 | 56 | var jogo1 = 0; 57 | var jogo2 = 0; 58 | 59 | 60 | if (jogo1 > jogo2) { 61 | print('Time 1 venceu o jogo'); 62 | }if (jogo1 < jogo2) { 63 | print('Time 2 venceu o jogo'); 64 | }else{ 65 | print('Empate'); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /desafios/outros/treino_intermediario.dart: -------------------------------------------------------------------------------- 1 | class Person { 2 | final String name; 3 | final int age; 4 | final String country; 5 | final String gender; 6 | 7 | Person(this.name, this.age, this.country, this.gender); 8 | } 9 | 10 | void main() { 11 | List listPeople = [ 12 | Person('João', 10, 'Brasil', 'Masculino'), 13 | Person('Maria', 25, 'Argentina', 'Feminino'), 14 | Person('Pedro', 30, 'Russia', 'Masculino'), 15 | Person('José', 35, 'Russia', 'Masculino'), 16 | Person('Marcos', 40, 'Brasil', 'Masculino'), 17 | Person('Janaina', 45, 'Brasil', 'Feminino'), 18 | Person('Ronaldo', 90, 'Brasil', 'Masculino'), 19 | ]; 20 | 21 | double mediaIdadeHomens = 0; 22 | int qntMulherer = 0; 23 | int qntHomens = 0; 24 | 25 | //* printar pessoas com mais de 30 anos e do Brasil 26 | // var newListas = listPeople.where((p) => p.age > 30 && p.country == 'Brasil').toList(); 27 | // newListas.forEach((person) => print(person.name)); 28 | //* Descobrir a média da idade dos homens 29 | // var listaIdadeMasculino = 30 | // listPeople.where((person) => person.gender.toLowerCase() == 'masculino'); 31 | // listaIdadeMasculino.forEach((personMasculino) { 32 | // mediaIdadeHomens += personMasculino.age; 33 | // }); 34 | 35 | // print(mediaIdadeHomens / listaIdadeMasculino.length); 36 | 37 | //* Descobrir o total de pessoas no Brasil. E se há mais mulheres ou homens printando o maior; 38 | 39 | // var listaPessoasBrasil = listPeople.where((person) => person.country.toLowerCase() == 'brasil'); 40 | // listaPessoasBrasil.forEach( 41 | // (person) { 42 | // if (person.gender.toLowerCase() == 'feminino') { 43 | // qntMulherer++; 44 | // } else { 45 | // qntHomens++; 46 | // } 47 | // }, 48 | // ); 49 | // qntMulherer > qntHomens 50 | // ? print( 51 | // 'A quantidade total é: ${listaPessoasBrasil.length} e o número de mulheres é maior: $qntMulherer') 52 | // : print( 53 | // 'A quantidade total é: ${listaPessoasBrasil.length} e o número de homens é maior: $qntHomens'); 54 | 55 | //* Descobrir a quantidade de pessoas com mais de 30 anos e do Brasil 56 | var listaPessoasCom30Brasil = listPeople.where( 57 | (nomes) => nomes.country.toLowerCase() == 'brasil' && nomes.age > 30, 58 | ); 59 | for (var nomes in listaPessoasCom30Brasil) { 60 | print(nomes.name); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /cursos/academia_do_flutter/funcoes_colecoes/desafio.dart: -------------------------------------------------------------------------------- 1 | final pessoa = [ 2 | 'Rodrigo Ramalho|63|Masculino', 3 | 'João Pedro|3|Masculino', 4 | 'José|5|Masculino', 5 | 'João|184|Masculino', 6 | 'Maria|40|Feminino', 7 | 'Diana|40|Feminino', 8 | 'Maria|40|Feminino', 9 | 'Diana|40|Feminino', 10 | ]; 11 | void main() { 12 | Set listaSemDuplicatas = pessoa.toSet(); //* Removi as duplicatas 13 | var novaListaCorreta = listaSemDuplicatas.toList(); 14 | 15 | //Rodrigo 16 | final pessoasSemDuplicatas = pessoa.toSet().map((e) => e.split('|')).toList(); 17 | 18 | var listaMasculinoNome = []; 19 | var listaFemininoNome = []; 20 | var maiorIdadeNomes = []; 21 | 22 | for (var element in novaListaCorreta) { 23 | var listaPaciente = element.toLowerCase().split('|'); 24 | if (listaPaciente.contains('masculino')) { 25 | listaMasculinoNome.add(listaPaciente[0]); 26 | } else { 27 | listaFemininoNome.add(listaPaciente[0]); 28 | } 29 | } 30 | // print('O Total de pacientes Masculino é: ${listaMasculinoNome.length}:\nNome dos pacientes são:'); 31 | // listaMasculinoNome.forEach(print); 32 | 33 | // print('\nO Total de pacientes Feminino é: ${listaFemininoNome.length}:\nNome dos pacientes são:'); 34 | // listaFemininoNome.forEach(print); 35 | 36 | for (var element in novaListaCorreta) { 37 | var listaPaciente = element.toLowerCase().split('|'); 38 | var listaConvertida = int.parse(listaPaciente[1]); 39 | if (listaConvertida > 18) { 40 | maiorIdadeNomes.add(listaPaciente[0]); 41 | } 42 | } 43 | 44 | // print('As pessoas maiores de idades são:\n'); 45 | // maiorIdadeNomes.forEach(print); 46 | 47 | //* Forma rodrigo maior de 18 anos 48 | final pessoasMaioresIdade = pessoasSemDuplicatas.where((element) { 49 | final idade = int.tryParse(element[1]) ?? 0; 50 | return idade > 18; 51 | }).toList(); 52 | 53 | // print('A lista de pessoas maior idade são:'); 54 | // pessoasMaioresIdade.forEach((element) => print(element[0])); 55 | 56 | //* Encontrar a pessoa mais velha 57 | final listaPacienteOrdenada = [...pessoasSemDuplicatas]; 58 | listaPacienteOrdenada.sort((p1, p2){ 59 | final idadeP1 = int.tryParse(p1[1]) ?? 0; 60 | final idadeP2 = int.tryParse(p2[1]) ?? 0; 61 | return idadeP2.compareTo(idadeP1); 62 | }); 63 | final pessoaMaisVelha = listaPacienteOrdenada.first; 64 | print('A pessoas mais velha é a ${pessoaMaisVelha[0]} e a sua idade é ${pessoaMaisVelha[1]}'); 65 | } 66 | -------------------------------------------------------------------------------- /desafios/dasafio_elevador/main.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Crie uma classe Elevador para armazenar as informações de um elevador de prédio. A classe deve armazenar o andar atual (térreo = 0), total de andares no prédio (desconsiderando o térreo), capacidade do elevador e quantas pessoas estão presentes nele. A classe deve também disponibilizar os seguintes métodos: 3 | 4 | Inicializar: que deve receber como parâmetros a capacidade do elevador e o total de andares no prédio (os elevadores sempre começam no térreo e vazio); 5 | Entrar: para acrescentar uma pessoa no elevador (só deve acrescentar se ainda houver espaço); 6 | Sair: para remover uma pessoa do elevador (só deve remover se houver alguém dentro dele); 7 | Subir: para subir um andar (não deve subir se já estiver no último andar); 8 | Descer: para descer um andar (não deve descer se já estiver no térreo); 9 | Obs.: Encapsular todos os atributos da classe (criar os métodos set e get). 10 | */ 11 | 12 | import 'dart:io'; 13 | import 'elevador.dart'; 14 | import 'funcao.dart'; //Não terminado 15 | import 'pessoa.dart'; 16 | 17 | main() { 18 | int saida = 0; 19 | var pessoa = Pessoa(nome: '', peso: 0); 20 | 21 | 22 | do { 23 | print( 24 | 'Digite a sua operação: (Tipo do Elevador: 1) - (Adicionar pessoa: 2) - (Remover pessoa: 3) \n - (Subir Elevador: 4) - (Descer Elevador: 5) - (mostrar pessoas : 6) - (Finalizar: 7)\n'); 25 | var entrada = stdin.readLineSync(); 26 | int numero = int.parse(entrada!); 27 | saida = numero; 28 | 29 | switch (numero) { 30 | case 1: 31 | print('Digite o peso do (Elevador): \n'); 32 | int pesoElevador = pergunta(0); 33 | print('Digite quantos andares tem o (Predio): \n'); 34 | int andares = pergunta(0); 35 | Elevador(pesoElevador: pesoElevador, andaresPredio: andares); 36 | break; 37 | case 2: 38 | print('Digite o nome: \n'); 39 | String nome = pergunta(''); 40 | print('Digite o peso da pessoa: \n'); 41 | int pesoPessoas = pergunta(0); 42 | Pessoa(nome: nome, peso: pesoPessoas); 43 | 44 | pessoa.mostrarPessoas(); 45 | break; 46 | case 3: 47 | print("Digite o nome da pessoa que você quer remover: \n"); 48 | String nomePessoa = pergunta(''); 49 | pessoa.removerPessoa(nomePessoa); 50 | break; 51 | case 4: 52 | case 5: 53 | case 6: 54 | pessoa.mostrarPessoas(); 55 | break; 56 | } 57 | } while (saida != 7); 58 | } 59 | -------------------------------------------------------------------------------- /testes/listas.dart: -------------------------------------------------------------------------------- 1 | class CategorysModel { 2 | final String? iconPath; 3 | final String? segmentId; 4 | final String? name; 5 | final String? segmentName; 6 | 7 | CategorysModel({this.iconPath, this.segmentId, this.name, this.segmentName}); 8 | } 9 | 10 | class CampaingsModel { 11 | final String? title; 12 | final List? categories; 13 | 14 | CampaingsModel({this.title, this.categories}); 15 | } 16 | 17 | void main(List args) { 18 | List listaCampaings = [ 19 | CampaingsModel(title: 'natan', categories: [ 20 | CategorysModel( 21 | iconPath: 'iconezin', 22 | segmentId: '3', 23 | name: 'natan', 24 | segmentName: 'natan', 25 | ), 26 | ]), 27 | CampaingsModel(title: 'natan1', categories: [ 28 | CategorysModel( 29 | iconPath: 'icone', 30 | segmentId: '2', 31 | name: 'natan1', 32 | segmentName: 'natan1', 33 | ), 34 | ]), 35 | CampaingsModel( 36 | title: 'natan1', 37 | categories: [ 38 | CategorysModel( 39 | iconPath: 'icone 2', 40 | segmentId: '1', 41 | name: 'natan1', 42 | segmentName: 'natan1', 43 | ), 44 | ], 45 | ), 46 | CampaingsModel(title: 'natan1', categories: []), 47 | ]; 48 | 49 | List listaPrincipal = percorrerListaPrincipal(listaCampaings); 50 | 51 | List listaIconPath = percorrerListIconPath(listaPrincipal); 52 | List listaName = percorrerListName(listaPrincipal); 53 | List listaSegmentId = percorrerListSegmentId(listaPrincipal); 54 | 55 | print(listaIconPath); 56 | print(listaName); 57 | print(listaSegmentId); 58 | } 59 | 60 | //* ---------------------------- Funções ---------------------------- // 61 | 62 | percorrerListIconPath(List lista) { 63 | List listaCerta = []; 64 | for (var element in lista) { 65 | for (var element2 in element) { 66 | listaCerta.add(element2.iconPath); 67 | } 68 | } 69 | return listaCerta; 70 | } 71 | 72 | percorrerListaPrincipal(List lista) { 73 | List listaAdicionada = []; 74 | 75 | for (var element in lista) { 76 | if (element.categories!.isNotEmpty) { 77 | listaAdicionada.add(element.categories); 78 | } 79 | } 80 | return listaAdicionada; 81 | } 82 | 83 | percorrerListName(List lista) { 84 | List listaCerta = []; 85 | for (var element in lista) { 86 | for (var element2 in element) { 87 | listaCerta.add(element2.name); 88 | } 89 | } 90 | return listaCerta; 91 | } 92 | 93 | percorrerListSegmentId(List lista) { 94 | List listaCerta = []; 95 | for (var element in lista) { 96 | for (var element2 in element) { 97 | listaCerta.add(element2.segmentId); 98 | } 99 | } 100 | return listaCerta; 101 | } 102 | --------------------------------------------------------------------------------