Flutter环境变量读取插件env_reader的使用
Flutter环境变量读取插件env_reader的使用
env_reader
是一个强大的Flutter插件,用于从.env
文件中读取、加密或生成环境变量到混淆的Dart模型中。本文将详细介绍如何在Flutter项目中使用该插件。
Features 🚀
- 自动化生成:直接将
.env
文件转换为动态的Dart模型,无需添加注解。 - 无缝集成:通过命令自动更新
pubspec.yaml
和.gitignore
,无需手动操作。 - 强加密保护:使用加密保护你的
.env
配置文件,防止未授权访问。 - 数据类型多样性:支持整数、小数、布尔值和字符串等数据类型的自动解析。
- 多种加载方式:可以从资产文件、本地文件、内存、网络或字符串中加载
.env
文件。
Install 🚀
添加依赖
首先,在你的pubspec.yaml
文件中添加env_reader
:
dart pub add env_reader
激活CLI工具
然后,激活env_reader
的CLI工具:
dart pub global activate env_reader
Usage 🚀
1. 设置配置文件
在项目的根目录创建一个.env
文件(与pubspec.yaml
同级),内容示例如下:
API_KEY=VYIUJ7tLdJFqrBesnOJEpkbceBB5GNz0t1aYgHxK3BMxbJOc/g==
DEBUG=true
PORT=8080
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
2. 运行命令(可选)
如果你想加密.env
文件,可以运行以下命令:
env_reader --input=".env" --output="assets/env/" --key="MyOptionalSecretKey"
如果你想从.env
文件生成Dart模型文件,可以运行:
env_reader --input=".env" --model="lib/src/env_model.dart" --null-safety
3. 加载.env文件
加载env_reader
实例:
import 'package:env_reader/env_reader.dart';
import 'package:flutter/services.dart';
await Env.load(
EnvStringLoader(await rootBundle.loadString('assets/env/.env')),
"MyOptionalSecretKey");
或者创建自己的EnvReader
实例:
EnvReader production = EnvReader();
await production.load(
EnvStringLoader(await rootBundle.loadString('assets/env/.env')),
"MyOptionalSecretKey");
4. 访问配置
获取并读取环境变量的值:
import 'package:env_reader/env_reader.dart';
import 'package:my_package/src/env_model.dart';
String api = Env.read("API_KEY") ?? "Got'cha 😎";
bool debug = Env.read<bool>("DEBUG") ?? false;
// 如果你有自己的实例,调用如下:
String api = production.read("API_KEY") ?? "Got'cha 😎";
bool debug = production.read<bool>("DEBUG") ?? false;
Text(
text:
debug ? "🤫 pssst, this is my api key y'all \n\n $api" : "Nothing to see here 🤪",
);
// 或者直接从之前生成的环境模型中访问值:
Text(
text:
EnvModel.debug ? "🤫 pssst, this is my api key y'all \n\n ${EnvModel.apiKey}" : "Nothing to see here 🤪",
);
示例代码
下面是一个完整的示例代码,展示了如何在Flutter应用中使用env_reader
:
import 'package:env_reader/env_reader.dart';
import 'package:example/src/env_model.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Future<void> main(List<String> arguments) async {
WidgetsFlutterBinding.ensureInitialized();
await Env.load(
EnvStringLoader(await rootBundle.loadString('assets/env/.env')),
"Nigam.123",
);
runApp(
const MaterialApp(
title: "Env Reader",
debugShowCheckedModeBanner: false,
home: MyApp(),
),
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(Env.read<String>("DATABASE_URL") ?? "Oops"),
Text(EnvModel.apiKey),
],
),
),
);
}
}
更多关于Flutter环境变量读取插件env_reader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复