如何集成flutter dotenv?

8 dart flutter

我正在尝试在我的项目中添加flutter_dotenv。我尝试将 .env 文件添加到 PROJECTNAME/filename.env 以及 PROJECTNAME/lib/filename.env。我不确定该项目的根在哪里。然后当我尝试运行该项目时,就会出现此情况。

Launching lib\main.dart on V2026 in debug mode...
lib\main.dart:1
Error detected in pubspec.yaml:
No file or variants found for asset: .env.
3

FAILURE: Build failed with an exception.

* Where:
Script 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 904

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'C:\src\flutter\bin\flutter.bat'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 28s
Exception: Gradle task assembleDebug failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

我也发现了这个错误

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Instance of 'FileNotFoundError'
E/flutter (32366): #0      _getEntriesFromFile
package:flutter_dotenv/src/dotenv.dart:76
E/flutter (32366): <asynchronous suspension>
E/flutter (32366): #1      load
package:flutter_dotenv/src/dotenv.dart:52
E/flutter (32366): #2      main
package:SOSMAK/main.dart:19
E/flutter (32366): <asynchronous suspension>
E/flutter (32366): #3      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:231:25)
E/flutter (32366): #4      _rootRun (dart:async/zone.dart:1190:13)
E/flutter (32366): #5      _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (32366): #6      _runZoned (dart:async/zone.dart:1630:10)
E/flutter (32366): #7      runZonedGuarded (dart:async/zone.dart:1618:12)
E/flutter (32366): #8      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:223:5)
E/flutter (32366): #9      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:301:19)
E/flutter (32366): #10     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
Run Code Online (Sandbox Code Playgroud)

我的 pubspec.yaml 名称:PROJECTNAME 描述:描述

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  provider: ^4.3.2+1
  cloud_firestore: ^0.16.0
  firebase_core: "^0.7.0"
  firebase_auth: "^0.20.0+1"
  firebase_messaging: ^6.0.16
  flutter_local_notifications: ^4.0.0
  google_fonts: ^1.1.0
  nima: ^1.0.0
  url_launcher: ^5.7.10
  flutter_dotenv: ^2.1.0

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
  assets:
    - assets/
    - .env
Run Code Online (Sandbox Code Playgroud)

它在“-.env”中说

The asset .env does not exist.
Try creating the file or fixing the path to the file.
Run Code Online (Sandbox Code Playgroud)

我的 main.dart

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await DotEnv.load(fileName: ".env");
  runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)

Shy*_*dda 6

就我而言,我错过了将其添加到文件.envpubspec.yml

flutter:
  assets:
    - assets/images/
    - .env
Run Code Online (Sandbox Code Playgroud)

添加后就开始工作了。

我希望它能帮助某人。


M.M*_*man 1

该文件夹应该类似于此文件夹结构,因为您已经添加.env到 pubspec.yaml 中,所以我没有看到任何其他问题。至于dotenv软件包中最近发布的版本,await load();如果文件名为.env. 我认为错误是因为文件目录可能有点错误

  • 啊..我做错的是,我将 .env 文件命名为“filename.env”。它应该只是“.env”。谢谢你! (2认同)