在 Flutter 中设置 ENVIED 包以隐藏 API 密钥时出现问题

问题描述 投票:0回答:4

我想在我的 flutter 应用程序中使用 API 密钥,并且已读到 envied 包是隐藏 API 密钥的好工具。

问题是我无法让这个工作。这就是我所做的:

  1. 安装了3个包:
$ flutter pub add envied
$ flutter pub add --dev envied_generator
$ flutter pub add --dev build_runner
  1. 在根文件夹中创建一个名为 .env 的文件来存储密钥
API_KEY=1234567890
  1. 在 lib/env/env.dart 中创建了一个类
import 'package:envied/envied.dart';

part 'env.g.dart';

@Envied(path: '.env')
abstract class Env {
  @EnviedField(varName: 'API_KEY')
  static final apiKey = _Env.apiKey;
}
  1. 然后运行:
flutter pub run build_runner build

然后我收到此错误:

[SEVERE] envied_generator:envied on lib/env/env.dart:

Envied can only handle types such as `int`, `double`, `num`, `bool` and `String`. Type `InvalidType` is not one of them.
  ╷
9 │   static final apiKey = _Env.apiKey;

并且不会生成 env.g.dart 文件。

我已经尝试了几次,据我所知,我完全遵循 pub.dev 上的设置,所以不确定如何修复它。

flutter environment-variables obfuscation api-key
4个回答
13
投票

为了使混淆器工作,您需要指定变量类型。示例:

static final String apiKey = _Env.apiKey;

1
投票

我有同样的问题,即我使用

API_KEY=...

更改为

APIKEY
(无下划线)解决了我的问题。


0
投票

Envied 只能处理

int
double
num
bool
String
等类型。类型
InvalidType
不是其中之一。

如果你遇到这种错误:它只是说你需要声明类型:

static final String key = _Env.key;

0
投票

对我来说,当我尝试将文件嵌套到较低的文件夹中时,出现此错误

lib/util/env/env.dart

这不起作用,但当我将文件位置更改为以下位置时,生成器运行:

lib/env/env.dart
© www.soinside.com 2019 - 2024. All rights reserved.