tarsier_env 1.0.1 copy "tarsier_env: ^1.0.1" to clipboard
tarsier_env: ^1.0.1 copied to clipboard

A Dart/Flutter package for loading `.env` files and simplifies the management of environment variables and helps automate the process of accessing them within your project.

tarsier_env #

A Dart/Flutter package for creating/loading .env files and generating a Dart file containing environment variables with static getters. This package simplifies the management of environment variables and helps automate the process of accessing them within your project.

Features #

  • Creates .env file if not existed with pre-defined keys and values.
  • Loads .env files and parses them into a Map<String, String>.
  • Generates a env.dart file with static getters for each environment variable.
  • Automatically inserts the import statement and Env.init() initialization in main.dart.
  • Supports custom paths for the env.dart file.

Installation #

1. Add Dependency #

Add the following to your pubspec.yaml file:

dependencies:
  tarsier_env: ^1.0.0

Then run this command:

flutter pub get

Commands #

The dart run tarsier_env <command> <optional> syntax maps directly with required commands (generate, new). Optional is when you use command generate for custom path.

dart run tarsier new
dart run tarsier generate
dart run tarsier generate lib/custom_path_for_env/env.dart

Usage Example #

1. Generates a default .env file with basic content, including a placeholder for your app name. Automatically checks if .env is listed in .gitignore and adds it if not already present.

dart run tarsier_env new

This will generate a .env file in the root directory with the following pre-defined content:

# AUTO-GENERATED FILE. 
# YOU CAN EDIT/ADD MORE KEYS AND ITS VALUE.
# Generated by tarsier_env script.

APP_NAME="Tarsier"
APP_ENV=local
APP_KEY=null
APP_DEBUG=true
APP_URL=http://localhost

...

The project will look like this.

your_project_name/
├── lib/
│   └── name.dart
├── test/
├── .env  #This is the created file upon running the command
├── pubspec.yaml
├── ...

2. Generates a env.dart file containing static getters for environment variables from your .env file. Automatically imports env.dart. Inserts await Env.init(); in the main() function of main.dart.

dart run tarsier_env generate common/environment
  • If no path is provided, the generated file will be placed in lib/env.dart.
  • If a relative path under the lib directory is provided, the file will be placed in the corresponding subfolder.

This will create lib/common/environment/env.dart with the environment. After running above code, you can access the environment variables in your Flutter app. The env.dart file generated by the package would look like this:

class Env {
  static Map<String, String> _variables = {};

  static init() async {
    _variables = await loadEnvFile('.env');
  }

  static Map<String, String> get vars => _variables;
  static String? get appName => _variables['APP_NAME'];
  static String? get appKey => _variables['APP_KEY'];
}

In your main.dart, ensure the Env.init() method is called before using any environment variable.

import 'package:flutter/material.dart';
import 'common/environment/env.dart'; // Automatically generated import

void main() async {
  await Env.init(); // Initialize environment variables

  String appName = Env.appName; // You can use the generated static getter
  String appKey = Env.vars['APP_KEY']; // Or you use the key in the Map<String,String>

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: Env.appName ?? 'Flutter App',
      home: Scaffold(
        appBar: AppBar(
          title: Text(Env.vars['APP_NAME'] ?? 'Flutter App'),
        ),
      ),
    );
  }
}

License #

This package is licensed under the MIT License.

Suggestions for Improvement? #

Feel free to open an issue or submit a pull request on GitHub.

Why "Tarsier ENV"?

The tarsier, one of the smallest primates, symbolizes simplicity and adaptability—just like this package! 🐒

1
likes
0
points
28
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart/Flutter package for loading `.env` files and simplifies the management of environment variables and helps automate the process of accessing them within your project.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on tarsier_env