📩dotenv

Aqui vai ser mostrado um simples uso do plugin flutter_dotenv para os aplicativos Flutter.

Primeiramente, o que são arquivos env? Uma rápida explicação seria:

"É um arquivo de texto de configuração simples, que é usado para definir algumas variáveis que você deseja passar para o ambiente do seu aplicativo."

Basicamente, fazer o uso de arquivos env nos projetos, é uma maneira mais segura para utilização de algumas coisas, como algumas keys de sdks, ou quaisquers outras informações críticas.

Invés de setarmos esses valores diretamente em arquivos nos nossos projetos, fazemos a criação de um arquivo .env, e ele vai conter todas essas nossas variáveis. A ideia também, é não fazer o upload desse arquivo para nenhuma plataforma de código, fazendo com que todo desenvolvedor que quiser rodar o projeto, tenha que preencher manualmente essas variáveis.

Vamos ao uso, utilizando o plugin:

  • Criamos um arquivo .env na raiz do projeto (pode ser qualquer nome, desde que inicie com .)

  • Adicionamos essa extensão no arquivo .gitignore

  • No pubspec.yaml adicionamos o arquivo nos assets:

assets:
  - .env.staging
  - .env.production

Essas são as configurações básicas, aqui abaixo um exemplo de como o arquivo vai ser:

STRIPE_SK_KEY=valor_aqui
STRIPE_PK_KEY=valor-aqui
ADJUST_KEY=valorzao
BASE_URL=base_url_aqui

Com isso, vou mostrar o uso real em uma estrutura como nos nossos projetos a partir do leap.

Dentro do arquivo setup_flavors, invés de setar os valores para variáveis por lá, fazemos o carregamento do arquivo env definido para aquele flavor:

if (packageInfo.packageName.contains("staging")) {
      await dotenv.load(fileName: ".env.staging");
      currentFlavor = FlavorsOptions.staging;
} else {
      await dotenv.load(fileName: ".env.production");
      currentFlavor = FlavorsOptions.production;
  }

Com isso, de acordo com o Flavor que rodarmos, teremos acesso ao arquivo correspondente.

E então para realizar o uso das variáveis, é necessário fazer a chamada da seguinte maneira:

String stripePkKey = dotenv.env['STRIPE_PK_KEY'] ?? ""

Vou trazer aqui uma organização melhor para fazer o uso em projetos de alto nível. Primeiramente, vamos criar uma classe com métodos estáticos, onde vamos setar cada um dos valores que virão do env.

class Environments {
  static String get baseUrl => dotenv.env['BASE_URL'] ?? "";

  static String get webSiteUrl => dotenv.env['WEBSITE'] ?? "";
}

E para seu uso, basta usar da seguinte maneira, de maneira muito mais organizada e bonita:

 Environments.webSiteUrl

A seguir, veja como configurar o CI/CD no Codemagic, para o uso do arquivo .env.

🎞️.env codemagic

O FUTURO CHEGOU!!!

Para resolver o problema abordado acima, vamos seguir o seguinte padrão:

  • Vamos criar um arquivo na raiz do projeto chamado .env.example

  • Este arquivo vai subir para o repositorio

  • Esse arquivo vai conter todas as chaves que devem existir no .env de produção para funcionar

  • Porém, todas as chaves vão estar vazias.

Last updated