FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix: preserve base env when optional override fails and reset init state on clean() by java-james · Pull Request #143 · java-james/flutter_dotenv · GitHub

Repository navigation

fix: preserve base env when optional override fails and reset init state on clean() - #143

Merged
java-james merged 1 commit into
masterfrom
jc/fix-discarded-base-file-when-override-fails
Apr 21, 2026
Merged

java-james merged 1 commit into
masterfrom
jc/fix-discarded-base-file-when-override-fails

Conversation

java-james commented Apr 21, 2026 •
edited
Loading

Copy link
Copy Markdown
Owner

Summary

  • Fix A: load(isOptional: true) no longer discards a successfully loaded base .env file when an override file is missing or empty. The single try/catch` wrapping both loads has been replaced with independent error handling per source file.
  • Fix B: clean() now resets isInitialized to false, so the instance no longer reports as initialized with an empty map after clearing.
  • Removed the _getLinesFromOverride helper (logic inlined into load()).

Motivation

When using load(isOptional: true) with override files, a missing or empty override would silently zero out the successfully loaded base file variables — a data-loss bug. Four separate issues reported this class of problem.

Separately, clean() only cleared the env map but left isInitialized == true, creating a zombie state where env returned an empty map instead of throwing NotInitializedError.

Fixes #101, #125

Breaking change

clean() now resets initialization state. Code that calls clean() then accesses dotenv.env without reloading will now throw NotInitializedError. This corrects buggy behavior — the previous pattern was never intentional or documented.

Test plan

  • Existing 37 tests pass unchanged
  • New: clean() sets isInitialized to false
  • New: env throws NotInitializedError after clean()
  • New: loadFromString() re-initializes correctly after clean()
  • New: valid base + empty override with isOptional: true preserves base vars
  • New: empty base + valid override with isOptional: true preserves override vars
  • New: isOptional: false still throws with empty base even if override is valid
  • flutter analyze clean (no new warnings)

java-james merged commit 833fcba into master Apr 21, 2026
1 check passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"EmptyEnvFileError" exception is fired when "isOptional" argument is passed

1 participant


Back | FazBrowse Home | New Git URL