tarsier_env 1.0.1
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
.envfile if not existed with pre-defined keys and values. - Loads
.envfiles and parses them into aMap<String, String>. - Generates a
env.dartfile with static getters for each environment variable. - Automatically inserts the import statement and
Env.init()initialization inmain.dart. - Supports custom paths for the
env.dartfile.
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
libdirectory 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! 🐒