CINXE.COM

flutter_dotenv | Flutter package

<!DOCTYPE html> <html lang="en-us"><head><script src="https://www.googletagmanager.com/gtm.js?id=GTM-MX6DBN9" async="async"></script><script src="/static/hash-9a8gn2mf/js/gtm.js" async="async"></script><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="twitter:card" content="summary"/><meta name="twitter:site" content="@dart_lang"/><meta name="twitter:description" content="Easily configure any flutter application with global variables using a `.env` file."/><meta name="twitter:image" content="https://pub.dev/static/hash-9a8gn2mf/img/pub-dev-icon-cover-image.png"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Dart packages"/><meta property="og:title" content="flutter_dotenv | Flutter package"/><meta property="og:description" content="Easily configure any flutter application with global variables using a `.env` file."/><meta property="og:image" content="https://pub.dev/static/hash-9a8gn2mf/img/pub-dev-icon-cover-image.png"/><meta property="og:url" content="https://pub.dev/packages/flutter_dotenv"/><title>flutter_dotenv | Flutter package</title><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500;700&amp;family=Google+Sans+Display:wght@400&amp;family=Google+Sans+Text:wght@400;500;700&amp;family=Google+Sans+Mono:wght@400;700&amp;display=swap"/><link rel="shortcut icon" href="/static/hash-9a8gn2mf/img/flutter-logo-32x32.png"/><link rel="stylesheet" href="https://www.gstatic.com/glue/v25_0/ccb.min.css"/><link rel="search" type="application/opensearchdescription+xml" title="Dart packages" href="/osd.xml"/><link rel="canonical" href="https://pub.dev/packages/flutter_dotenv"/><meta name="description" content="Easily configure any flutter application with global variables using a `.env` file."/><link rel="alternate" type="application/atom+xml" title="Updated Packages Feed for Pub" href="/feed.atom"/><link rel="stylesheet" type="text/css" href="/static/hash-9a8gn2mf/material/bundle/styles.css"/><link rel="stylesheet" type="text/css" href="/static/hash-9a8gn2mf/css/style.css"/><script src="/static/hash-9a8gn2mf/material/bundle/script.min.js" defer="defer"></script><script src="/static/hash-9a8gn2mf/js/script.dart.js" defer="defer"></script><script src="https://www.gstatic.com/brandstudio/kato/cookie_choice_component/cookie_consent_bar.v3.js" defer="defer" data-autoload-cookie-consent-bar="true"></script><meta name="pub-page-data" content="eyJwa2dEYXRhIjp7InBhY2thZ2UiOiJmbHV0dGVyX2RvdGVudiIsInZlcnNpb24iOiI1LjIuMSIsImxpa2VzIjoxODI3LCJpc0Rpc2NvbnRpbnVlZCI6ZmFsc2UsImlzTGF0ZXN0Ijp0cnVlfSwic2Vzc2lvbkF3YXJlIjpmYWxzZX0="/><link rel="preload" href="/static/hash-9a8gn2mf/highlight/highlight-with-init.js" as="script"/></head><body class="light-theme"><script src="/static/hash-9a8gn2mf/js/dark-init.js"></script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MX6DBN9" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div class="site-header"><button class="hamburger" aria-label="menu toggle"></button><a class="logo" href="/"><img class="site-logo" src="/static/hash-9a8gn2mf/img/pub-dev-logo.svg" alt="" width="140" height="30" role="presentation"/></a><div class="site-header-space"></div><div class="site-header-mask"></div><div class="site-header-search"><form action="/packages" method="GET"><input class="site-header-search-input" name="q" placeholder="New search..." autocomplete="on" title="Search"/></form></div><nav class="site-header-nav scroll-container"><div class="nav-login-container"><button id="-account-login" class="nav-main-button link">Sign in</button></div><div class="nav-container nav-help-container hoverable"><button class="nav-main-button">Help</button><div class="nav-hover-popup"><div class="nav-table-columns"><div class="nav-table-column"><h3>Pub.dev</h3><a class="nav-link" href="/help/search" rel="noopener" target="_blank">Searching for packages</a><a class="nav-link" href="/help/scoring" rel="noopener" target="_blank">Package scoring and pub points</a></div><div class="nav-table-column"><h3>Flutter</h3><a class="nav-link" href="https://flutter.dev/using-packages/" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://flutter.dev/developing-packages/" rel="noopener" target="_blank">Developing packages and plugins</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div><div class="nav-table-column"><h3>Dart</h3><a class="nav-link" href="https://dart.dev/guides/packages" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">Pub.dev <img class="foldable-icon" src="/static/hash-9a8gn2mf/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="/help/search" rel="noopener" target="_blank">Searching for packages</a><a class="nav-link" href="/help/scoring" rel="noopener" target="_blank">Package scoring and pub points</a></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">Flutter <img class="foldable-icon" src="/static/hash-9a8gn2mf/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="https://flutter.dev/using-packages/" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://flutter.dev/developing-packages/" rel="noopener" target="_blank">Developing packages and plugins</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div><div class="nav-container nav-help-container-mobile foldable"><h3 class="foldable-button">Dart <img class="foldable-icon" src="/static/hash-9a8gn2mf/img/nav-mobile-foldable-icon.svg" alt="toggle folding of the section" width="13" height="6"/></h3><div class="foldable-content"><a class="nav-link" href="https://dart.dev/guides/packages" rel="noopener" target="_blank">Using packages</a><a class="nav-link" href="https://dart.dev/tools/pub/publishing" rel="noopener" target="_blank">Publishing a package</a></div></div></nav></div><div id="banner-container"></div><main class="container"><div class="detail-wrapper -active -has-info-box"><div class="detail-header -is-loose"><div class="detail-container"><div class="detail-header-outer-block"><div class="detail-header-content-block"><h1 class="title">flutter_dotenv 5.2.1 <span class="pkg-page-title-copy"><img class="pkg-page-title-copy-icon filter-invert-on-dark" src="/static/hash-9a8gn2mf/img/content-copy-icon.svg" alt="copy &quot;flutter_dotenv: ^5.2.1&quot; to clipboard" width="18" height="18" title="Copy &quot;flutter_dotenv: ^5.2.1&quot; to clipboard" data-copy-content="flutter_dotenv: ^5.2.1" data-ga-click-event="copy-package-version"/><div class="pkg-page-title-copy-feedback"><span class="code">flutter_dotenv: ^5.2.1</span> copied to clipboard</div></span></h1><div class="metadata">Published <span><a class="-x-ago" href="" title="Oct 14, 2024" aria-label="58 days ago" aria-role="button" role="button" data-timestamp="1728889022946">58 days ago</a></span> <span class="package-badge" title="Package is compatible with Dart 3.">Dart 3 compatible</span></div><div class="detail-tags-and-like"><div class="detail-tags"><div class="-pub-tag-badge"><span class="tag-badge-main">SDK</span><a class="tag-badge-sub" href="/packages?q=sdk%3Aflutter" rel="nofollow" title="Packages compatible with Flutter SDK">Flutter</a></div><div class="-pub-tag-badge"><span class="tag-badge-main">Platform</span><a class="tag-badge-sub" href="/packages?q=platform%3Aandroid" rel="nofollow" title="Packages compatible with Android platform">Android</a><a class="tag-badge-sub" href="/packages?q=platform%3Aios" rel="nofollow" title="Packages compatible with iOS platform">iOS</a><a class="tag-badge-sub" href="/packages?q=platform%3Alinux" rel="nofollow" title="Packages compatible with Linux platform">Linux</a><a class="tag-badge-sub" href="/packages?q=platform%3Amacos" rel="nofollow" title="Packages compatible with macOS platform">macOS</a><a class="tag-badge-sub" href="/packages?q=platform%3Aweb" rel="nofollow" title="Packages compatible with Web platform">web</a><a class="tag-badge-sub" href="/packages?q=platform%3Awindows" rel="nofollow" title="Packages compatible with Windows platform">Windows</a></div></div><div class="detail-like"><button id="-pub-like-icon-button" class="mdc-icon-button" data-ga-click-event="toggle-like" aria-pressed="false" title="Like this package"><img class="mdc-icon-button__icon" src="/static/hash-9a8gn2mf/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/><img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-9a8gn2mf/img/like-active.svg" alt="liked status: active" width="18" height="18"/></button><span class="likes-count"><span id="likes-count">1.8k</span></span></div></div></div></div></div></div><div class="detail-container"><div class="detail-lead"><div class="detail-metadata-toggle"><div class="detail-metadata-toggle-icon">→</div><h3 class="detail-lead-title">Metadata</h3></div><p class="detail-lead-text">Easily configure any flutter application with global variables using a `.env` file.</p><p class="detail-lead-more"><a class="detail-metadata-toggle">More...</a></p></div></div><div class="detail-body"><div class="detail-tabs"><div class="detail-tabs-wide-header"><div class="detail-container"><ul class="detail-tabs-header"><li class="detail-tab tab-button detail-tab-readme-title -active">Readme</li><li class="detail-tab tab-link detail-tab-changelog-title"><a href="/packages/flutter_dotenv/changelog" role="button">Changelog</a></li><li class="detail-tab tab-link detail-tab-example-title"><a href="/packages/flutter_dotenv/example" role="button">Example</a></li><li class="detail-tab tab-link detail-tab-installing-title"><a href="/packages/flutter_dotenv/install" role="button">Installing</a></li><li class="detail-tab tab-link detail-tab-versions-title"><a href="/packages/flutter_dotenv/versions" role="button">Versions</a></li><li class="detail-tab tab-link detail-tab-analysis-title"><a href="/packages/flutter_dotenv/score" role="button">Scores</a></li></ul></div></div><div class="detail-container detail-body-main"><div class="detail-tabs-content"><section class="tab-content detail-tab-readme-content -active markdown-body"><h1 class="hash-header" id="flutter_dotenv">flutter_dotenv <a href="#flutter_dotenv" class="hash-link">#</a></h1> <p><a href="https://pub.dartlang.org/packages/flutter_dotenv" rel="ugc"><img src="https://img.shields.io/pub/v/flutter_dotenv.svg" alt="Pub Version"></a></p> <p>Load configuration at runtime from a <code>.env</code> file which can be used throughout the application.</p> <blockquote> <p><strong>The <a href="https://www.12factor.net" rel="ugc">twelve-factor app</a> stores <a href="https://12factor.net/config" rel="ugc">config</a> in <em>environment variables</em></strong> (often shortened to <em>env vars</em> or <em>env</em>). Env vars are easy to change between deploys without changing any code... they are a language- and OS-agnostic standard.</p> </blockquote> <h1 class="hash-header" id="about">About <a href="#about" class="hash-link">#</a></h1> <p>This library is a fork of <a href="https://pub.dartlang.org/packages/dotenv" rel="ugc">mockturtl/dotenv</a> dart library, initially with slight changes to make it work with flutter.</p> <p>An <em>environment</em> is the set of variables known to a process (say, <code>PATH</code>, <code>PORT</code>, ...). It is desirable to mimic the production environment during development (testing, staging, ...) by reading these values from a file.</p> <p>This library parses that file and merges its values with the built-in <a href="https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:io.Platform#id_environment" rel="ugc"><code>Platform.environment</code></a> map.</p> <h1 class="hash-header" id="security-considerations">Security Considerations <a href="#security-considerations" class="hash-link">#</a></h1> <p>Sensitive keys like API keys and tokens should not be stored in your Flutter app. They can be extracted even if obfuscated. This libary currently does not obfuscate variables as it may lull the consumers into a false sense of security. Use environment variables on the frontend application for non-sensitive configuration values, such as API endpoints and feature flags.</p> <p>For more details on mobile app security best practices, refer to the <a href="https://owasp.org/www-project-mobile-top-10/" rel="ugc">OWASP Mobile Security Project.</a></p> <h1 class="hash-header" id="usage">Usage <a href="#usage" class="hash-link">#</a></h1> <ol> <li>Create a <code>.env</code> file in the root of your project with the example content:</li> </ol> <pre><code class="language-sh">FOO=foo BAR=bar FOOBAR=$FOO$BAR ESCAPED_DOLLAR_SIGN='$1000' # This is a comment </code></pre> <blockquote> <p>Note: If deploying to web server, ensure that the config file is uploaded and not ignored. (Whitelist the config file on the server, or name the config file without a leading <code>.</code>)</p> </blockquote> <ol start="2"> <li>Add the <code>.env</code> file to your assets bundle in <code>pubspec.yaml</code>. <strong>Ensure that the path corresponds to the location of the .env file!</strong></li> </ol> <pre><code class="language-yml">assets: - .env </code></pre> <ol start="3"> <li>Remember to add the <code>.env</code> file as an entry in your <code>.gitignore</code> if it isn't already unless you want it included in your version control.</li> </ol> <pre><code class="language-txt">*.env </code></pre> <ol start="4"> <li>Load the <code>.env</code> file in <code>main.dart</code>. Note that <code>flutter_dotenv &gt;=5.0.0</code> has a slightly different syntax for consuming the DotEnv data.</li> </ol> <p><strong>v5.0.0 and later</strong></p> <pre><code class="language-dart">import 'package:flutter_dotenv/flutter_dotenv.dart'; // DotEnv dotenv = DotEnv() is automatically called during import. // If you want to load multiple dotenv files or name your dotenv object differently, you can do the following and import the singleton into the relavant files: // DotEnv another_dotenv = DotEnv() Future main() async { // To load the .env file contents into dotenv. // NOTE: fileName defaults to .env and can be omitted in this case. // Ensure that the filename corresponds to the path in step 1 and 2. await dotenv.load(fileName: ".env"); //...runapp } </code></pre> <p>You can then access variables from <code>.env</code> throughout the application</p> <pre><code class="language-dart">import 'package:flutter_dotenv/flutter_dotenv.dart'; dotenv.env['VAR_NAME']; </code></pre> <p><strong>Before v5.0.0</strong></p> <pre><code class="language-dart">import 'package:flutter_dotenv/flutter_dotenv.dart' as DotEnv; Future main() async { await DotEnv.load(fileName: ".env"); //...runapp } </code></pre> <p>Access env using:</p> <pre><code class="language-dart">import 'package:flutter_dotenv/flutter_dotenv.dart'; env['VAR_NAME']; </code></pre> <p>Optionally you could map <code>env</code> after load to a config model to access a config with types.</p> <h1 class="hash-header" id="advanced-usage">Advanced usage <a href="#advanced-usage" class="hash-link">#</a></h1> <p>Refer to the <code>test/dotenv_test.dart</code> file for a better idea of the behaviour of the <code>.env</code> parser.</p> <h2 class="hash-header" id="get-with-typing">Get with typing <a href="#get-with-typing" class="hash-link">#</a></h2> <p>It's a common pattern to get an env variable then parse it as a type. You can get variables that are already typed by using the following functions:</p> <pre><code class="language-dart"> // someBool is a bool final someBool = dotenv.getBool('VAR_NAME', fallback: true); // someDouble is a double final someDouble = dotenv.getDouble('VAR_NAME', fallback: .3); // someInt is an int final someInt = dotenv.getInt('VAR_NAME', fallback: 42); </code></pre> <h2 class="hash-header" id="referencing">Referencing <a href="#referencing" class="hash-link">#</a></h2> <p>You can reference variables defined above other within <code>.env</code>:</p> <pre><code> FOO=foo BAR=bar FOOBAR=$FOO$BAR </code></pre> <p>You can escape referencing by wrapping the value in single quotes:</p> <pre><code class="language-dart">ESCAPED_DOLLAR_SIGN='$1000' </code></pre> <h2 class="hash-header" id="merging">Merging <a href="#merging" class="hash-link">#</a></h2> <p>You can merge a map into the environment on load:</p> <pre><code class="language-dart"> await DotEnv.load(mergeWith: { "FOO": "foo", "BAR": "bar"}); </code></pre> <p>You can also reference these merged variables within <code>.env</code>:</p> <pre><code> FOOBAR=$FOO$BAR </code></pre> <h2 class="hash-header" id="using-in-tests">Using in tests <a href="#using-in-tests" class="hash-link">#</a></h2> <p>There is a <code>testLoad</code> method that can be used to load a static set of variables for testing.</p> <pre><code class="language-dart">// Loading from a static string. dotenv.testLoad(fileInput: '''FOO=foo BAR=bar '''); // Loading from a file synchronously. dotenv.testLoad(fileInput: File('test/.env').readAsStringSync()); </code></pre> <h2 class="hash-header" id="null-safety">Null safety <a href="#null-safety" class="hash-link">#</a></h2> <p>To avoid null-safety checks for variables that are known to exist, there is a <code>get()</code> method that will throw an exception if the variable is undefined. You can also specify a default fallback value for when the variable is undefined in the .env file.</p> <pre><code class="language-dart">Future&lt;void&gt; main() async { await dotenv.load(); String foo = dotenv.get('VAR_NAME'); // Or with fallback. String bar = dotenv.get('MISSING_VAR_NAME', fallback: 'sane-default'); // This would return null. String? baz = dotenv.maybeGet('MISSING_VAR_NAME', fallback: null); } </code></pre> <h2 class="hash-header" id="usage-with-platform-environment">Usage with Platform Environment <a href="#usage-with-platform-environment" class="hash-link">#</a></h2> <p>The Platform.environment map can be merged into the env:</p> <pre><code class="language-dart"> // For example using Platform.environment that contains a CLIENT_ID entry await DotEnv.load(mergeWith: Platform.environment); print(env["CLIENT_ID"]); </code></pre> <p>Like other merged entries described above, <code>.env</code> entries can reference these merged Platform.Environment entries if required:</p> <pre><code> CLIENT_URL=https://$CLIENT_ID.dev.domain.com </code></pre> <h1 class="hash-header" id="security-considerations-2">Security Considerations <a href="#security-considerations" class="hash-link">#</a></h1> <h3 class="hash-header" id="never-store-sensitive-keys-in-the-frontend">Never store sensitive keys in the frontend: <a href="#never-store-sensitive-keys-in-the-frontend" class="hash-link">#</a></h3> <p>Sensitive keys like API keys and tokens should not be stored in your Flutter app. They can be extracted even if obfuscated. This libary currently chooses not to ocfuscate the variables as it may lull the consumers into a false sense of security. Use environment variables for non-sensitive configuration values, such as API endpoints and feature flags.</p> <h1 class="hash-header" id="discussion">Discussion <a href="#discussion" class="hash-link">#</a></h1> <p>Use the <a href="https://github.com/java-james/flutter_dotenv/issues" rel="ugc">issue tracker</a> for bug reports and feature requests.</p> <p>Pull requests are welcome.</p> <h1 class="hash-header" id="prior-art">Prior art <a href="#prior-art" class="hash-link">#</a></h1> <ul> <li><a href="https://pub.dartlang.org/packages/dotenv" rel="ugc">mockturtl/dotenv</a> (dart)</li> <li><a href="https://github.com/bkeepers/dotenv" rel="ugc">bkeepers/dotenv</a> (ruby)</li> <li><a href="https://github.com/motdotla/dotenv" rel="ugc">motdotla/dotenv</a> (node)</li> <li><a href="https://github.com/theskumar/python-dotenv" rel="ugc">theskumar/python-dotenv</a> (python)</li> <li><a href="https://github.com/joho/godotenv" rel="ugc">joho/godotenv</a> (go)</li> <li><a href="https://github.com/slapresta/rust-dotenv" rel="ugc">slapresta/rust-dotenv</a> (rust)</li> <li><a href="https://github.com/Chandu/DotEnv" rel="ugc">chandu/dotenv</a> (c#)</li> <li><a href="https://github.com/tpope/lein-dotenv" rel="ugc">tpope/lein-dotenv</a>, <a href="https://github.com/rentpath/clj-dotenv" rel="ugc">rentpath/clj-dotenv</a> (clojure)</li> <li><a href="https://github.com/mefellows/sbt-dotenv" rel="ugc">mefellows/sbt-dotenv</a> (scala)</li> <li><a href="https://www.youtube.com/watch?v=pUjJU8Bbn3g" rel="ugc">greenspun/dotenv</a> (half of common lisp)</li> </ul> <h1 class="hash-header" id="license-mitlicense">license: <a href="https://github.com/java-james/flutter_dotenv/blob/master/LICENSE" rel="ugc">MIT</a> <a href="#license-mitlicense" class="hash-link">#</a></h1> </section></div></div></div><aside class="detail-info-box"><a class="packages-scores" href="/packages/flutter_dotenv/score"><div class="packages-score packages-score-like"><div class="packages-score-value -has-value"><span class="packages-score-value-number">1.83k</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">likes</div></div><div class="packages-score packages-score-health"><div class="packages-score-value -has-value"><span class="packages-score-value-number">160</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">pub points</div></div><div class="packages-score packages-score-popularity"><div class="packages-score-value -has-value"><span class="packages-score-value-number">100</span><span class="packages-score-value-sign">%</span></div><div class="packages-score-label">popularity</div></div></a><h3 class="title">Publisher</h3><p><span>unverified uploader</span></p><h3 class="title pkg-infobox-metadata">Metadata</h3><p>Easily configure any flutter application with global variables using a `.env` file.</p><p><a class="link" href="https://github.com/java-james/flutter_dotenv" rel="ugc">Repository (GitHub)</a><br/><a class="link" href="https://github.com/java-james/flutter_dotenv/issues" rel="ugc">View&#47;report issues</a><br/><a class="link" href="https://github.com/java-james/flutter_dotenv/blob/master/CONTRIBUTING.md" rel="ugc">Contributing</a><br/></p><h3 class="title">Documentation</h3><p><a class="link" href="/documentation/flutter_dotenv/latest/">API reference</a><br/></p><h3 class="title">License</h3><p><img class="inline-icon-img filter-invert-on-dark" src="/static/hash-9a8gn2mf/img/material-icon-balance.svg" alt="" width="14" height="14" role="presentation"/>MIT (<a href="/packages/flutter_dotenv/license">license</a>)</p><h3 class="title">Dependencies</h3><p><a href="https://api.flutter.dev/">flutter</a></p><h3 class="title">More</h3><p><a href="/packages?q=dependency%3Aflutter_dotenv" rel="nofollow">Packages that depend on flutter_dotenv</a></p></aside></div><script type="application/ld+json">{"@context":"http\u003a\u002f\u002fschema.org","@type":"SoftwareSourceCode","name":"flutter\u005fdotenv","version":"5.2.1","description":"flutter\u005fdotenv - Easily configure any flutter application with global variables using a \u0060.env\u0060 file.","url":"https\u003a\u002f\u002fpub.dev\u002fpackages\u002fflutter\u005fdotenv","dateCreated":"2018-12-12T00\u003a14\u003a36.278195Z","dateModified":"2024-10-14T06\u003a57\u003a02.946709Z","programmingLanguage":"Dart","image":"https\u003a\u002f\u002fpub.dev\u002fstatic\u002fimg\u002fpub-dev-icon-cover-image.png","license":"https\u003a\u002f\u002fpub.dev\u002fpackages\u002fflutter\u005fdotenv\u002flicense"}</script></div><div class="detail-metadata"><h3 class="detail-metadata-title"><span class="detail-metadata-toggle">←</span> Metadata</h3><div class="detail-info-box"><a class="packages-scores" href="/packages/flutter_dotenv/score"><div class="packages-score packages-score-like"><div class="packages-score-value -has-value"><span class="packages-score-value-number">1.83k</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">likes</div></div><div class="packages-score packages-score-health"><div class="packages-score-value -has-value"><span class="packages-score-value-number">160</span><span class="packages-score-value-sign"></span></div><div class="packages-score-label">pub points</div></div><div class="packages-score packages-score-popularity"><div class="packages-score-value -has-value"><span class="packages-score-value-number">100</span><span class="packages-score-value-sign">%</span></div><div class="packages-score-label">popularity</div></div></a><h3 class="title">Publisher</h3><p><span>unverified uploader</span></p><h3 class="title pkg-infobox-metadata">Metadata</h3><p>Easily configure any flutter application with global variables using a `.env` file.</p><p><a class="link" href="https://github.com/java-james/flutter_dotenv" rel="ugc">Repository (GitHub)</a><br/><a class="link" href="https://github.com/java-james/flutter_dotenv/issues" rel="ugc">View&#47;report issues</a><br/><a class="link" href="https://github.com/java-james/flutter_dotenv/blob/master/CONTRIBUTING.md" rel="ugc">Contributing</a><br/></p><h3 class="title">Documentation</h3><p><a class="link" href="/documentation/flutter_dotenv/latest/">API reference</a><br/></p><h3 class="title">License</h3><p><img class="inline-icon-img filter-invert-on-dark" src="/static/hash-9a8gn2mf/img/material-icon-balance.svg" alt="" width="14" height="14" role="presentation"/>MIT (<a href="/packages/flutter_dotenv/license">license</a>)</p><h3 class="title">Dependencies</h3><p><a href="https://api.flutter.dev/">flutter</a></p><h3 class="title">More</h3><p><a href="/packages?q=dependency%3Aflutter_dotenv" rel="nofollow">Packages that depend on flutter_dotenv</a></p></div><p class="detail-lead-back"><a class="detail-metadata-toggle">Back</a></p></div><div id="-screenshot-carousel" class="carousel"><fab id="-carousel-prev" class="mdc-fab carousel-prev carousel-nav" data-mdc-auto-init="MDCRipple" title="Previous" data-ga-click-event="screenshot-carousel-prev-click" tabindex="0"><div class="mdc-fab__ripple"></div><img class="mdc-fab__icon" src="/static/hash-9a8gn2mf/img/keyboard_arrow_left.svg" alt="previous" width="24" height="24" aria-hidden="true"/></fab><div id="-image-container" class="image-container"></div><fab id="-carousel-next" class="mdc-fab carousel-next carousel-nav" data-mdc-auto-init="MDCRipple" title="Next" data-ga-click-event="screenshot-carousel-next-click" tabindex="0"><div class="mdc-fab__ripple"></div><img class="mdc-fab__icon" src="/static/hash-9a8gn2mf/img/keyboard_arrow_right.svg" alt="next" width="24" height="24" aria-hidden="true"/></fab><p id="-screenshot-description" class="screenshot-description"></p></div></main><footer class="site-footer"><a class="link" href="https://dart.dev/">Dart language</a><a class="link sep" href="/report?subject=package%3Aflutter_dotenv&amp;url=https%3A%2F%2Fpub.dev%2Fpackages%2Fflutter_dotenv">Report package</a><a class="link sep" href="/policy">Policy</a><a class="link sep" href="https://www.google.com/intl/en/policies/terms/">Terms</a><a class="link sep" href="https://developers.google.com/terms/">API Terms</a><a class="link sep" href="/security">Security</a><a class="link sep" href="https://www.google.com/intl/en/policies/privacy/">Privacy</a><a class="link sep" href="/help">Help</a><a class="link icon sep" href="/feed.atom"><img class="inline-icon" src="/static/hash-9a8gn2mf/img/rss-feed-icon.svg" alt="RSS" width="20" height="20" title="RSS/atom feed"/></a><a class="link icon github_issue" href="https://github.com/dart-lang/pub-dev/issues/new"><img class="inline-icon" src="/static/hash-9a8gn2mf/img/bug-report-white-96px.png" alt="bug report" width="20" height="20" title="Report an issue with this site"/></a></footer><script src="/static/hash-9a8gn2mf/highlight/highlight-with-init.js" defer="defer"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10