📩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 codemagicPARA O FUTURO: Discutir uma maneira, um arquivo, ou algo do tipo, para manter apenas os nomes das chaves existentes para cada projeto. Para que quando alguém for rodar, saber quais as chaves tem que ser preenchidas. E já que o arquivo .env não sobe para o github com os valores, deve ser pensada uma maneira de resolver isso.
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