You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目启动时无法找到.env文件,求解决方案

Flutter中dotenv加载.env文件失败的问题

代码情况

main函数代码如下:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await dotenv.load(fileName: "./env");
  var documentsDirectory = await path_provider.getApplicationDocumentsDirectory();
    
  Hive.init(documentsDirectory.path);
  Hive.registerAdapter(UserDataModelAdapter());
  Hive.registerAdapter(TaskHiveModelAdapter());
    
  runApp(const MyApp());
}

项目配置

项目根目录存在.env文件(目录结构如图:项目目录结构),且已在pubspec.yaml中配置资源:

assets:
  - .env

错误信息

构建时抛出错误:

No file or variants found for asset: .env.
Error detected in pubspec.yaml:
    
Target debug_android_application failed: Exception: Failed to bundle asset files.
    

FAILURE: Build failed with an exception.

同时dotenv运行时抛出异常:dotenv: Unhandled Exception: Instance of 'FileNotFoundError'

问题

为何Flutter启动时无法找到.env文件?


解决方案

1. 文件名不匹配

代码中dotenv.load指定的文件名是./env,但实际文件是.env,二者不匹配。修改代码中的文件名参数:

await dotenv.load(fileName: ".env");

2. 资源配置未生效

修改pubspec.yaml的资源配置后,需要执行flutter pub get刷新配置,或者直接重启Flutter开发服务,确保资源被正确打包。同时确认.env文件确实和pubspec.yaml处于同一根目录下。

3. 改用Flutter资源加载逻辑

dotenv默认从本地文件系统读取文件,而Flutter的资源是打包到应用中的,二者路径逻辑不同。可以通过Flutter的rootBundle读取资源内容后再传给dotenv,避免路径问题:

import 'package:flutter/services.dart' show rootBundle;

// ...

final envContent = await rootBundle.loadString('.env');
dotenv.load(envContent: envContent);

内容的提问来源于stack exchange,提问作者Caio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:13:32