Updated environment variable handling notes

This commit is contained in:
2025-10-16 11:50:44 +02:00
committed by GitHub
parent e507c71209
commit a13be0bb53
+34
View File
@@ -501,6 +501,40 @@ env=prod make change-env
This would copy `.env.prod` to `.env`. By default, running the command without specifying an environment will use the `.env.default` file. In this way, an infinite number of environments could be created and easily switched between.
> [!IMPORTANT]
> This method of managing environment variables has known security issues. In later projects, this method has been retired in favor of passing in the environment variables directly to Flutter.
> It is recommended to migrate any existing `dot_env` usage to this newer system.
Nowadays, environment variables are managed by passing the `.env` file into the Flutter/Dart command directly using `--dart-define-from-file=.env`. This requires a couple of changes, both in how the application is launched and how the environment variables are configured in the code.
If you're using Visual Studio Code, you can simply edit your `launch.json` and include these lines:
```json
"toolArgs": [
"--dart-define-from-file=.env"
]
```
Migrating the code allows you to _remove_ code, which is always nice. The `AppEnv` class can be removed, as it is no longer necessary. Now, your `EnvVar` enum can point directly to the environment varibles:
```dart
enum EnvVar {
/// The environment to use for the API calls. Returns either [sandbox] or [prod].
///
/// Example `.env` configuration:
/// ```
/// API_ENVIRONMENT="sandbox"
/// ```
apiEnvironment(String.fromEnvironment("API_ENVIRONMENT")), // Note the direct reference to the environment variable
;
/// The environment variable to use when retrieving the value of this [EnvVar].
final String value;
const EnvVar(this.value);
}
```
#### Accessing Secrets
Accessing the secrets defined in the environment variables can be done via the `AppEnv`, provided they have been mapped to a corresponding `EnvVar` enum item: