Dependências Flutter e formas de hospedagem

Qual a diferença entre Dart e Plugin Packages?

Mariaelena Nascimento
May 11 · 3 min read
Imagem: flutter.dev

Estava lá uma desenvolvedora iOS passeando por algo híbrido quando de repente esbarrou em Flutter e se deparou com a necessidade do uso de dependências. Nem é meme, e a desenvolvedora sou eu. #EuFuiEuTava.

Se você, assim como eu, já começou a brincar com o Flutter, já deve ter constatado que com o uso da ferramenta muitas vezes é preciso importar bibliotecas externas. Essas bibliotecas, que também chamamos de dependências, são pacotes que contêm códigos que já executam algumas tarefas que você precisa, expondo para uso apenas a chamada da função e o resultado.

Neste post, vamos entender um pouquinho mais sobre como funcionam essas dependências e como implementá-las. Vamos lá?

Dart e Plugin package

Para criar sua própria biblioteca no Flutter, é importante saber que existem dois tipos de dependências: o Dart package e o Plugin package.

O Dart Package é implementado completamente em dart, que é a linguagem de programação usada no Flutter. Para desenvolver um Plugin, porém, além do dart, é também preciso usar a linguagem nativa de cada plataforma.

Explicando melhor: o Plugin Package é uma solução para acessar alguns recursos nativos, como câmera e sensores dos aparelhos de cada plataforma, por exemplo. Por isso, temos que implementar os códigos de cada plataforma separadamente, em uma das linguagens nativas, seja Kotlin, Java, Swift ou Objective-C. Entretanto, a parte de API do Plugin Package ainda permanece em Dart. Lembrando que os dois packages servem para o mesmo objetivo, e você pode utilizar o que for melhor pra você.

Deu pra entender? Vamos, então, à mão na massa!

Criação de um package

O comando de criação de um package é semelhante ao de uma aplicação em Flutter. No terminal, digitando o comando abaixo, você vai obter informações de criação no Flutter.

$ flutter create --help

Com ele, é possível ver o bloco de opções para criação de um template:

$ -t, --template=<type>

O tipo de template que você vai usar está relacionado ao tipo de projeto, ou seja, pode ser um app, module, package ou plugin. Para iniciar os projetos Dart e Plugin, é só usar os seguintes comandos:

$ flutter create --template=package package_name

$ flutter create --template=plugin --platforms=iOS,android -i swift a- kotlin plugin_name

Formas de hospedagem

Depois de construir uma dependência, você pode hospedá-la de quatro formas diferentes. Pode ser no SDK Flutter, em um host específico, no repositório do git ou localmente em um diretório. E para que a hospedagem funcione você precisa sinalizar o caminho da dependência no pubspec.yaml.

Abaixo tem um passo a passo rapidinho para cada uma das opções:

GIT
Plugin no repositório privado, usando ssh:

Utilizando branch específica:

Especificando o caminho:

Hosted packages:
Hospedados no pub.dev:

Hospedados em outro servidor:

Localmente
Mostrando o caminho:

Como falado no início, no Flutter é bem frequente a utilização de pacotes externos, e dependendo do seu projeto você pode se deparar com a necessidade de criar seus próprios módulos de pacotes. Agora você já sabe que alguns recursos só serão acessados de maneira nativa e, para isto, o Plugin Package é a solução. Caso não tenha essa restrição pode seguir com o Dart Package que inclusive, dependendo de seu contato com a linguagem, se torna mais simples já que se mantém no padrão do Flutter.

Com seu pacote prontinho, já sabe que existem algumas formas de hospedar podendo compartilhar publicamente ou mantê-lo privado. E é isso! Espero que tenha ajudado com entendimento sobre dependências para facilitar o seu trabalho com o Flutter.

Ficou alguma dúvida ou tem alguma sugestão? Aproveite os campos de comentários! E se você quiser trabalhar com um grande time de devs iOS que estão aprendendo junto o tempo todo, é só dar uma olhada aqui e se candidatar a uma de nossas vagas. Vamos aprender juntos e até a próxima!

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade…

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Mariaelena Nascimento

Written by

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.