Principais pacotes Flutter e Dart em 2023

Tempo de leitura: 7 minutes

Uma lista selecionada de pacotes que consideramos úteis para projetos Flutter e Dart

💡 Este artigo foi atualizado em março de 2023 com pacotes adicionais e uma lista de perguntas para ajudar a avaliar os pacotes.

Os pacotes de código aberto desempenham um papel importante no desenvolvimento de software, especialmente quando se trata de criar aplicativos Flutter. Pub.dev tem um ecossistema crescente de mais de 33.000 pacotes para ajudá-lo a adicionar funcionalidade ao seu aplicativo Flutter.

Este blog contém uma lista selecionada de pacotes Flutter e Dart que são úteis para criar aplicativos no Desenvolvimento Profissional, bem como aqueles que usamos em nossos projetos pessoais.

✨ denota um pacote adicionado nesta atualização

 

Como decidir qual pacote Flutter ou Dart usar em seu projeto

Com milhares de pacotes para escolher no ecossistema Flutter, como você escolhe qual pacote usar em seu projeto? Em qualquer empresa profissional, devemos levar em consideração algumas características na hora de selecionar um pacote para incluir em nossos projetos.

Pacotes que possuem código de exemplo, são bem documentados e possuem um README claro serão muito mais fáceis de implementar em seu próprio código do que pacotes sem. No lado mais técnico, recomendamos procurar a cobertura de teste do pacote, um changelog bem documentado, regras de lint e se o pacote está atualizado com a versão mais recente do Flutter. O Flutter Ecosystem Committee também leva muito disso em consideração quando atribui a um pacote o Badge Flutter Favorite. Aqui está uma lista de perguntas que usamos para avaliar os pacotes:

Fundamentos

  • O pacote tem um escopo/foco claramente definido?
  • Tem uma API intuitiva?
  • Tem uma licença permissiva (MIT, etc.)?
  • Tem um changelog fácil de ler?
  • Tem diretrizes de contribuição?
  • É amplamente utilizado? Gostamos de olhar para as estrelas do GitHub, dependentes e a ontuação de popularidade no pub para se aproximar. Pontos de bônus se for um favorito do Flutter!

Qualidade

  • Tem boa cobertura de teste?
  • Tem uma boa pontuação de pana?
  • Ele tem regras de lint configuradas?
  • Possui integração contínua configurada?

Manutenção

  • Ele é atualizado com as últimas versões estáveis do Flutter/Dart?
  • Está bem documentado?
  • Contém informações sobre como usar o pacote (README, exemplos, site de documentos, etc.)?
  • Possui documentação da API (dart doc)?
  • Os mantenedores estão ativos?
  • Os mantenedores são amigáveis e colaborativos?

 

Principais pacotes de código aberto

alchemist

Alchemist é um pacote projetado para aprimorar o teste de ouro. Este pacote, desenvolvido pela Betterment, contém uma API declarativa e aborda alguns pontos problemáticos do suporte de teste de ouro na estrutura do Flutter — como corrigir flakes de teste de integração contínua e simplificar a injeção de um tema personalizado.

auto_size_text ✨

Auto_size_text é um widget de texto aprimorado que dimensiona automaticamente o texto dentro de uma área para caber nas restrições desejadas. Essas restrições incluem tamanho máximo, tamanho mínimo, linhas máximas ou até mesmo uma lista predefinida de tamanhos.

cached_network_image ✨

Cached_network_image é uma ótima maneira de carregar todas as imagens provenientes da rede. Essa biblioteca carregará uma imagem, além de mostrar espaços reservados e animações de carregamento. Ele também armazenará essa imagem em cache para que você não carregue a mesma imagem duas vezes.

collection

Este pacote da equipe Dart é obrigatório se você estiver usando coleções em sua base de código. Collection contém funções para ajudar na igualdade entre elementos de uma coleção, bem como entre coleções, operações de lista, implementação de fila de prioridade e wrappers.

coverage

Acreditamos na importância de 100% de cobertura de código, o que garante que cada linha de código seja testada e se comporte conforme o esperado. Coverage é um ótimo pacote Dart que permite aos usuários coletar, manipular e formatar dados de cobertura.

Com cobertura, você pode coletar cobertura da VM do Dart e formatar esses dados de cobertura em LCOV ou formato impresso.

cloud_firestore

Cloud_firestore é um plug-in do Flutter que fornece aos usuários acesso ao banco de dados Firebase Cloud Firestore, um banco de dados em nuvem NoSQL para desenvolvimento móvel, web e de servidor. Isso permite que seu aplicativo leia, grave e reaja a alterações em tempo real no banco de dados do Firestore.

Certifique-se de verificar a documentação sobre como você pode começar a usar o pacote cloud_firestore em seus próprios projetos.

equatable

Equatable é um pacote pequeno, mas útil, para comparar objetos Dart. Este pacote sobrecarrega o operador == e permite comparar objetos sem geração de código.

firebase_auth

Não podemos recomendar cloud_firestore sem mencionar também firebase_auth. firebase_auth permite que os usuários acessem a Firebase Authentication API, permitindo a autenticação por meio de senhas, números de telefone e provedores de serviços como Twitter, Facebook e Google.

Visite a documentação do Authentication Usage para saber mais sobre a integração do firebase_auth em seus projetos.

flame

O Flame é essencial para o desenvolvimento de jogos no Flutter. Ele aproveita a estrutura do Flutter para fornecer tudo o que você precisa para criar jogos de alto desempenho. Com o Flame, seu jogo Flutter está a apenas um widget de distância. Comece com sua documentação detalhada.

flame_bloc

Se você estiver usando o flame para criar um jogo, também poderá aproveitar a biblioteca de blocos para gerenciar o estado do jogo. O pacote flame_bloc facilita o acesso e a escuta de blocs e cubits.

flutter_bloc

Preferimos usar o pacote flutter_bloc para gerenciamento de estado. Um favorito do Flutter, flutter_bloc é uma solução simples, previsível e facilmente testável para gerenciamento de estado, que se encaixa perfeitamente com as práticas de desenvolvimento.

‍flow_builder

Flow_builder é um pacote Flutter que simplifica o uso de pilhas de navegação seguindo a nova API Navigator 2.0. Basta criar um estado de fluxo e o flow_builder poderá gerar uma nova pilha de navegação com base nas alterações no estado do fluxo.

flutter_gen

No Flutter, usar uma string para especificar um caminho para um ativo não é seguro. Por exemplo, um erro de asserção pode ser gerado se você acidentalmente digitar incorretamente o caminho do ativo. flutter_gen é um gerador de código para recursos, fontes, cores e muito mais, eliminando efetivamente as APIs baseadas em strings.

Com flutter_gen, você pode usar a geração de código para gerar referências de ativos seguras para compilação em vez de usar strings para caminhos de ativos. Para obter mais informações sobre como instalar e usar o flutter_gen, verifique a documentação.‍

flutter_secure_storage ✨

Se você deseja armazenar dados confidenciais em um dispositivo, flutter_secure_storage pode ser útil. Esta biblioteca fornece uma maneira conveniente de acessar o armazenamento criptografado específico da plataforma: Chaveiro para iOS e criptografia AES ou EncryptedSharedPreferences para Android.

freezed ✨

Freezed permite que você defina classes imutáveis no Dart de uma maneira limpa e fácil. Quando anotado em uma classe, freezed gerará todo o clichê necessário para transformar a classe em uma classe de dados com fromJson, toJson e todos os outros métodos necessários. Freezed pode ser uma ferramenta útil, mas deve ser usado intencionalmente, pois pode causar longos tempos de compilação quando usado em projetos maiores.

googleapis

O pacote googleapis Dart fornece bibliotecas Dart geradas automaticamente para acessar as APIs encontradas nas bibliotecas cliente de API do Google. A instalação desse pacote oferece acesso a dezenas de APIs do Google disponíveis, incluindo Admin SDK, Agenda, Dialogflow, Drive e muito mais.

Certifique-se de ler sobre como você pode usar as APIs do Google com o Flutter.

hive

Hive é um pacote Dart que fornece aos desenvolvedores um banco de dados NoSQL facilmente acessível. É simples, poderoso e intuitivo – apreciamos como você pode facilmente armazenar primitivos e objetos Dart dentro do banco de dados semelhante a um mapa do Hive.

in_app_review

O feedback do usuário pode ser parte integrante do processo de desenvolvimento do aplicativo, por isso incluímos o pacote in_app_review Flutter em nossa lista. Os desenvolvedores podem solicitar aos usuários uma revisão da loja de aplicativos dentro do aplicativo.

mason

O pacote Mason Dart é uma ferramenta fundamental para aumentar a eficiência por meio da automação. Com o mason, você pode criar e personalizar modelos de código reutilizáveis na forma de tijolos.

membrane

Membrane é um pacote útil para gerar código de Rust para Dart. Com ênfase no desempenho e digitação rigorosa, é uma maneira confiável de portar o código para o Dart.

mocktail

O teste automatizado é um componente-chave do nosso fluxo de trabalho de desenvolvimento para garantir que nossos aplicativos tenham o desempenho esperado. Um pacote para escrever testes automatizados é o mocktail. O Mocktail, inspirado no mockito, permite que os usuários rascunhem e verifiquem o comportamento do método criando simulações sem depender da geração de código em bases de código seguras nulas.

Mocktail também funciona em conjunto com o pacote mockingjay, que permite aos usuários simular, testar e verificar o comportamento de navegação. Fique ligado para saber mais sobre este novo pacote!

modal_bottom_sheet

Mantido por Jaime Blasco, o modal_bottom_sheet simplifica a implementação de uma planilha inferior modal que tem bom desempenho e parece adequada em qualquer dispositivo móvel nativo. Ele inclui suporte para rolagem, arrastar e outras personalizações.

pana

O Pana é um prático pacote Dart que permite analisar a saúde e a qualidade de outros pacotes que você está usando em seu aplicativo. Ele avalia os pacotes em várias categorias:

  • Segue as convenções do Dart
  • Fornece documentação
  • Suporta várias plataformas
  • Passa na análise estática
  • Suporta dependências atualizadas

Para começar, simplesmente instale o pana de pub.dev e especifique um pacote ou um diretório local para analisar.

Plus Plugins ✨

Os plug-ins Plus são uma coleção de plug-ins que expõem funcionalidades adicionais para coisas como acessar o estado da bateria, sensores e muito mais. Alguns de nossos plugins favoritos do grupo são conectividade_plus, que informa quando você tem acesso à Internet e share_plus, que permite compartilhar conteúdo usando a caixa de diálogo de compartilhamento da plataforma.

purchases_flutter

Purchases_flutter é um pacote útil da RevenueCat para implementar compras no aplicativo com StoreKit e Google Play Billing em seus aplicativos Flutter. Obtenha rastreamento de compras, assinaturas no aplicativo e análises em um só lugar.

recase

Recase é um pacote pequeno, mas poderoso, para alterar facilmente o caso do texto de entrada para snake_case, dot.case, path/case, PascalCase e muito mais.

url_launcher

Fiel ao seu nome, o pacote url_launcher Flutter é uma maneira conveniente de iniciar URLs externos de seu aplicativo com muitos esquemas de URL suportados. Use este pacote quando quiser contar com a plataforma subjacente para lidar com a abertura do URL para você.

cli_completion ✨

Este pacote é um utilitário pequeno, mas poderoso, útil ao criar sua própria interface de linha de comando. Adicione facilmente a funcionalidade de conclusão a qualquer Dart CLI.

dart_frog ✨

Dart_frog é uma estrutura de back-end rápida e minimalista escrita inteiramente em Dart. Se você gosta do Dart para desenvolvimento de front-end e deseja usar a mesma linguagem para desenvolvimento de back-end, pode experimentar o dart_frog. Leva apenas algumas linhas para começar e suporta hot reload.

flame_behaviors ✨

Flame_behaviors permite criar jogos usando entidades e comportamentos. Também pode facilitar o dimensionamento e o teste de seus jogos.

formz

Este pacote formz, que simplifica bastante a representação e validação de formulários em um formato facilmente compreensível. Simplesmente estenda FormzInput e forneça a entrada e o tipo de erro.

r13n ✨

O R13n facilita a implementação da regionalização em seu aplicativo, permitindo que você personalize ainda mais os aplicativos com um público global. Este pacote pode e deve ser usado em conjunto com l10n.

very_good_analysis

As ferramentas Linting são ótimas para garantir código consistente e de alta qualidade, verificando erros estilísticos. Criamos o pacote very_good_analysis para combinar as regras do (agora obsoleto) pacote pedantic.

very_good_cli

very_good_cli é uma ferramenta de linha de comando que pode ser usada para gerar vários modelos opinativos, incluindo: Very Good Core, nosso aplicativo iniciador Flutter opinativo, pacote Flutter, pacote Dart e plug-in federado. Criamos o Very Good CLI para facilitar o início de novos projetos — seja um aplicativo multiplataforma ou um pacote Flutter — e garantir que nossas práticas recomendadas sejam implementadas imediatamente.

Embora esta lista não seja exaustiva, queríamos mostrar os principais pacotes que algumas empresas que conheço usam, e projetos pessoais do Flutter.