You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用flutter_dotenv包在Android模拟器运行项目时出现.env文件找不到的问题

使用flutter_dotenv包在Android模拟器运行项目时出现.env文件找不到的问题

嗨,我之前在Android模拟器上用flutter_dotenv的时候也踩过这个一模一样的坑,给你整理几个靠谱的解决思路,你可以挨个试试:

首先得搞明白为啥会出这问题——Android模拟器里的APP是跑在独立的沙箱环境里的,你本地电脑项目根目录的.env文件,并不会自动同步到模拟器的APP运行目录中,直接用文件路径去读肯定找不到。

方法一:把.env移到assets目录(最稳妥的通用方案)

  1. 先在项目根目录(和lib文件夹同级的位置)新建一个assets文件夹,要是已经有了就跳过这步。
  2. 把你根目录的.env文件复制到这个assets文件夹里。
  3. 打开pubspec.yaml文件,找到flutter节点下的assets部分,把.env的路径加进去,修改后大概是这样:
    flutter:
      uses-material-design: true
      assets:
        - assets/.env
    
    注意缩进要和前面的uses-material-design保持一致,YAML对缩进要求特别严格!
  4. 最后修改main函数里加载.env的代码,指定assets里的文件路径:
    import 'package:flutter_dotenv/flutter_dotenv.dart';
    import 'package:flutter/material.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      // 这里改成assets里的路径
      await dotenv.load(fileName: 'assets/.env');
      runApp(MyApp());
    }
    
  5. 做完这些后,先执行flutter clean清理一下项目缓存,然后重新运行项目,基本就能读到文件了。

方法二:用--dart-define参数传递环境变量(适合不想动文件的情况)

要是你不想移动.env文件,也可以在运行项目的时候直接把环境变量通过命令行传递,比如:

flutter run --dart-define=API_KEY=your_secret_key_here

然后在代码里通过String apiKey = const String.fromEnvironment('API_KEY');来获取对应的值,这种方式不需要依赖flutter_dotenv,也不用担心文件找不到的问题。

额外检查项

  • 确认你的.env文件名没写错,比如是不是多打了个点写成.env.,或者漏了点写成env,Android系统是区分文件名大小写的!
  • 看看pubspec.yaml里的flutter_dotenv依赖是不是正确安装了,执行flutter pub get确保所有依赖都拉取到位。

备注:内容来源于stack exchange,提问作者Dr. Andrey Belkin

火山引擎 最新活动