{"id":28559024,"url":"https://github.com/eriscript/learn-dart","last_synced_at":"2025-06-10T08:35:56.490Z","repository":{"id":298242261,"uuid":"999266954","full_name":"eriscript/learn-dart","owner":"eriscript","description":"📚Playground e cheatsheet para aprender Dart. Coleção de projetos Dart que são divididos por tópicos e contêm exemplos de código com explicações.","archived":false,"fork":false,"pushed_at":"2025-06-10T05:18:15.000Z","size":0,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-10T05:30:22.576Z","etag":null,"topics":["cheatsheet","dart","dart-lang","examples","flutter","learning","playground","snippets","tutorial"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eriscript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T02:09:40.000Z","updated_at":"2025-06-10T05:18:19.000Z","dependencies_parsed_at":"2025-06-10T05:40:32.164Z","dependency_job_id":null,"html_url":"https://github.com/eriscript/learn-dart","commit_stats":null,"previous_names":["eriscript/learn-dart"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eriscript","download_url":"https://codeload.github.com/eriscript/learn-dart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-dart/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259039518,"owners_count":22796849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cheatsheet","dart","dart-lang","examples","flutter","learning","playground","snippets","tutorial"],"created_at":"2025-06-10T08:35:56.217Z","updated_at":"2025-06-10T08:35:56.478Z","avatar_url":"https://github.com/eriscript.png","language":null,"readme":"# Playground e Cheatsheet Para Aprender Dart\n\n\u003e Essa é uma coleção de projetos Dart dividida em [tópicos](#índice) que contém\n\u003e exemplos de código com explicações, diferentes usos e links para outras leituras.\n\n\u003e _Ler em:_ [_English_](README.en-US.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md).\n\nÉ um **playground** porque você pode fazer alterações no código para ver como ele se comporta, além de [testá-lo](#testando-o-código) usando asserções. Também é possível [revisar o código](#revisando-o-código) que você escreveu automaticamente e verificar se ele se encaixa no guia de estilo de código Dart. Isso tudo pode tornar seu processo de aprendizagem mais interativo e ajudar a manter a qualidade do código bastante alta desde o início.\n\nÉ um **cheatsheet** porque você pode voltar a esses exemplos de código quando quiser recapitular a sintaxe das [estruturas padrão do Dart](#índice). O código está cheio de testes com asserções, então você poderá ver o retorno das funções sem precisar executá-las manualmente.\n\n\u003e _Você pode se interessar também por 🤖 [SUA-IDEIA-DE-PROJETO-DART]_\n\n## Como Usar Esse Repositório\n\nCada projeto neste repositório é estruturado para facilitar a aprendizagem e experimentação dos tópicos de Dart. Aqui está um exemplo de como um projeto típico está organizado:\n\n```dart\n// Nome do tópico\n// Exemplo: Lists (Listas em Dart)\n\n/// Link para leituras adicionais (usando comentários de documentação do Dart)\n/// @see: https://dart.dev/guides/libraries/library-tour#collections\n\n// Descrição do Tópico\n// Uma explicação mais detalhada sobre o tópico atual, como listas (Lists) em Dart.\n// Exemplo: As listas em Dart são coleções ordenadas de objetos, oferecendo um\n// objeto que pode conter múltiplos elementos em uma ordem específica.\n\n// Exemplo de Código\nfinal numbers = \u003cint\u003e[]; // Declaração de uma lista de inteiros\n\n// Explicação do Subtópico\n// Cada arquivo contém exemplos e funções de teste que ilustram subtópicos\n// (ex.: tipos de lista, métodos de lista).\n```\n\n### Exemplo: Trabalhando com Listas em Dart\n\nAs listas em Dart (`List`) são a implementação mais comum de uma coleção ordenada de itens. Elas podem ser de tamanho fixo ou dinâmico. O tipo de variável que a lista pode armazenar é definido usando a sintaxe genérica (`\u003cT\u003e`). Veja abaixo um exemplo de como declarar e manipular listas em Dart:\n\n```dart\n// Declaração de uma lista de inteiros chamada \"numbers\"\nvar numbers = \u003cint\u003e[];\n\n// Adicionando elementos à lista\nnumbers.add(1);\nnumbers.add(2);\nnumbers.add(3);\n\n// Imprimindo os elementos da lista\nprint(numbers); // Saída: [1, 2, 3]\n\n// Adicionando múltiplos elementos de outra lista usando o método addAll\nvar moreNumbers = [4, 5, 6];\nnumbers.addAll(moreNumbers);\n\n// Imprimindo os elementos atualizados da lista\nprint(numbers); // Saída: [1, 2, 3, 4, 5, 6]\n```\n\nDiferença entre Listas Dinâmicas e de Tamanho Fixo\n\n- **Listas Dinâmicas (Padrão)**: São de tamanho dinâmico, ou seja, podem crescer e diminuir conforme necessário (`.add()`, `.remove()`). São criadas com `[]` ou `List\u003cT\u003e.empty(growable: true)`.\n- **Listas de Tamanho Fixo**: Têm um tamanho que não pode ser alterado após a criação. São melhores para quando o número de elementos é conhecido e não mudará. Tentar usar `.add()` ou `.remove()` resultará em um erro.\n\n### Então você pode querer fazer o seguinte:\n\n- [Encontrar o tópico](#índice) que deseja aprender ou recapitular.\n- Ler os comentários e/ou a documentação vinculada em cada projeto (como no exemplo acima).\n- Analisar os exemplos e os testes para ver exemplos de uso e a saída esperada.\n- Alterar o código ou adicionar novos testes para ver o que acontece.\n- [Executar testes](#testando-o-código) e [revisar o código](#revisando-o-código) para ver se ele funciona e está escrito corretamente.\n\n## Índice\n\n1. **Começando**\n   - [O que é Dart](src/getting_started/what_is_dart.md)\n   - [Sintaxe Básica do Dart](src/getting_started/dart_syntax.md)\n   - [Variáveis](src/getting_started/test_variables.dart)\n2. **Operadores**\n   - [Operadores Aritméticos](src/operators/test_arithmetic.dart) (`+`, `-`, `*`, `/`, `~/`, `%`)\n   - [Operadores Bitwise](src/operators/test_bitwise.dart) (`\u0026`, `|`, `^`, `\u003e\u003e`, `\u003c\u003c`, `\u003e\u003e\u003e`, `~`)\n   - [Operadores de Atribuição](src/operators/test_assigment.dart) (`=`, `+=`, `??=`, `-=`, `*=`, `/=` etc.)\n   - [Operadores de Relacionais](src/operators/test_relation.dart) (`==`, `!=`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`)\n   - [Operadores Lógicos](src/operators/test_logical.dart) (`\u0026\u0026`, `||`, `!`)\n3. **Tipos de Dados**\n   - [int](src/data_types/test_int.dart)\n   - [double](src/data_types/test_double.dart)\n   - [num](src/data_types/test_num.dart)\n   - [String](src/data_types/test_string.dart)\n   - [bool](src/data_types/test_bool.dart)\n   - [List](src/data_types/test_list.dart) (Listas)\n   - [Set](src/data_types/test_set.dart) (Conjuntos)\n   - [Map](src/data_types/test_map.dart) (Mapas)\n   - [dynamic e Object](src/data_types/test_dynamic_object.dart)\n4. **Controles de Fluxo**\n   - [A declaração `if-else`](src/control_flow/test_if_else.dart)\n   - [O laço `for` (incluindo `for-in`)](src/control_flow/test_for_for_in.dart)\n   - [O laço `while` e `do-while`](src/control_flow/test_while_do_while.dart)\n   - [A declaração `switch`](src/control_flow/test_switch.dart)\n   - [As declarações `break` e `continue`](src/control_flow/test_break_continue.dart)\n   - [A declaração `try-catch-finally` para tratamento de exceções](src/control_flow/test_try_catch_finally.dart)\n   - [A declaração `return`](src/control_flow/test_return.dart)\n   - [Programação Assíncrona (`async/await`)](src/control_flow/test_async_await.dart)\n5. **Funções**\n   - [Declaração de Funções](src/functions/test_functions.dart)\n   - [Parâmetros (posicionais, nomeados, opcionais)](src/functions/test_parameters.dart)\n   - [Funções Anônimas (lambdas) e Arrow Functions (`=\u003e`)](src/functions/test_anonimous_functions.dart)\n6. **Classes**\n   - [Definição de Classe](src/classes/test_class_definition.dart) (`class`)\n   - [Construtores e Instâncias de Objetos](src/classes/test_constructors_instance_objects.dart)\n   - [Métodos e Variáveis de Instância](src/classes/test_methods_variables_instance.dart)\n   - [Getters e Setters](src/classes/test_getters_setters.dart)\n   - [Herança](src/classes/test_inheritance.dart) (`extends`)\n   - [Classes Abstratas e Interfaces](src/classes/test_class_abstracts_interfaces.dart) (`abstract`, `implements`)\n   - [Mixins](src/classes/test_mixins.dart) (`with`)\n7. **Módulos e Pacotes**\n   - [Bibliotecas e Visibilidade](src/modules/test_libraries.dart) (`import`, `show`, `hide`)\n   - [Pacotes](src/modules/test_packages.dart) (gerenciados com pub.dev)\n8. **Erros e Exceções**\n   - [Tratando Exceções](src/exceptions/test_handle_exceptions.dart) (`throw`, `try-catch`)\n9. **Arquivos**\n   - [Lendo e Escrevendo em Arquivos](src/files/test_file_reading.dart) (usando `dart:io`)\n     - `File('meu_arquivo.txt').writeAsStringSync('Olá, Dart!');`\n10. **Adicional**\n    - [Futures e Streams](src/additions/test_futures_streams.dart) (Programação Assíncrona)\n    - Generators (`sync*`, `async*`) e `yield`\n    - Algumas Bibliotecas Padrão\n      - Tempo e Datas (`DateTime`, `Duration`)\n      - Coleções (`dart:collection`)\n      - Conversão (`dart:convert` para JSON, etc.)\n\n## Pré-requisitos\n\n**Instalando o SDK do Dart**\n\nCertifique-se de ter o [SDK do Dart instalado](https://dart.dev/get-dart) em sua máquina.\n\nVocê pode ver a versão do Dart executando:\n\n```bash\ndart --version\n```\n\n**Instalando dependências**\n\nInstale todas as dependências listadas no arquivo `pubspec.yaml` do projeto executando:\n\n```bash\ndart pub get\n```\n\nO comando `dart pub get` irá baixar todas as dependências listadas no arquivo `pubspec.yaml` do seu projeto, utilizando o [pub](https://pub.dev/) como gerenciador de pacotes.\n\n## Testando o Código\n\nTestes são feitos usando o pacote [test](https://pub.dev/packages/test), o framework de testes padrão em Dart.\n\nPara executar todos os testes no projeto, execute o seguinte comando na pasta raiz:\n\n```bash\ndart test\n```\n\nPara executar testes de um arquivo específico, execute:\n\n```bash\ndart test path/para/seu_arquivo_test.dart\n```\n\nPara executar um teste específico pelo seu nome:\n\n```bash\ndart test --name \"nome ou parte do nome do teste\"\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriscript%2Flearn-dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feriscript%2Flearn-dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriscript%2Flearn-dart/lists"}