Flutter环境管理插件env_manager的使用
Flutter环境管理插件env_manager的使用
通常在应用程序中,有必要有一个系统来管理全局变量(或环境变量),以便在整个应用中传播。env_manager 就是为此而设计的,它以智能的方式管理您的环境变量。
如何工作
您的环境变量存储在一个名为 envdir
的文件夹中,该文件夹将包含所有您的环境变量文件,并且您可以根据需要将它们分成不同的部分。
以下是一个使用 env_manager
的项目文件夹示例:
your_project
├── android
│└── ...
├── assets
│└── ...
├── build
│└── ...
│
├── envdir
│├── application.yaml
│├── another_env_file.yaml
│└── example_env_folder
│ └── example_env_file_inside_folder.yaml
│
├── ios
│└── ...
├── lib
│└── ...
├── test
│└── ...
├── .flutter-plugins
├── .flutter-plugins-dependencies
├── .gitattributes
├── .gitignore
├── .metadata
├── .packages
├── analysis_options.yml
├── your_project.iml
├── pubspec.lock
├── pubspec.yaml
└── README.md
在您的应用中设置包
在您的 pubspec.yaml
文件的依赖项部分添加包:
env_manager: ^0.1.2
然后执行 flutter pub get
来从 pub.dev
获取包。
获取后,执行 flutter pub run env_manager:make
来在项目的根目录创建 envdir
文件夹,在这个文件夹内您可以创建所有的环境文件(甚至可以有不同的文件夹)。
重要提示: 所有的环境文件必须使用以下格式:
production:
example_A_variable: "My A variable in production"
example_B_variable: "My B variable in prodution"
...
development:
example_A_variable: "My A variable in development"
example_B_variable: "My B variable in development"
所有变量在生产环境和开发环境中都必须相同。
之后,您需要在 pubspec.yaml
文件的 assets
部分添加环境文件:
...
flutter:
assets:
- assets/myexampleimage.png
- assets/anotherexampleimage.jpg
...
#Env Files
- envdir/application.yaml
- envdir/example_folder/new_env_file.yaml
...
...
在您的应用中添加代码
在主类中,在 runApp
方法之前添加以下代码片段:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await env.locateAndLoad([
env.EnvironmentFileLoader("myEnvName", await rootBundle.loadString("envdir/application.yaml")),
env.EnvironmentFileLoader("myEnvName2", await rootBundle.loadString("envdir/example_folder/new_env_file.yaml")),
// 其他要加载的文件
]);
runApp(MyApp());
}
您还可以通过以下方式设置环境,使其响应生产环境变量或开发环境变量:
env.useProductionEnvironment(true | false);
重要提示: 默认情况下,此值为 false
。
或者,您可以通过 get
方法直接调用环境变量(默认情况下会使用 useProductionEnvironment
的值):
env.get("myEnvName")["variable_name"]
env.get("myEnvName", withProduction: true | false)["variable_name"]
示例代码
以下是 main.dart
的示例代码:
import 'package:flutter/material.dart';
import 'package:env_manager/env_manager.dart' as env;
import 'package:flutter/services.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await env.locateAndLoad([
env.EnvironmentFileLoader(
"myEnvName", await rootBundle.loadString("envdir/application.yaml")),
]);
// 可选
env.useProductionEnvironment(true);
runApp(MaterialApp(
title: env.get("myEnvName")["application_name"],
home: const MyApplication(),
));
}
class MyApplication extends StatefulWidget {
const MyApplication({Key? key}) : super(key: key);
[@override](/user/override)
_MyApplicationState createState() => _MyApplicationState();
}
class _MyApplicationState extends State<MyApplication> {
[@override](/user/override)
void initState() {
super.initState();
env.useProductionEnvironment(true);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: Text(env.get("myEnvName")["my_env_variable"]),
),
);
}
}
更多关于Flutter环境管理插件env_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter环境管理插件env_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
env_manager
是一个 Flutter 插件,用于管理和切换不同环境配置(如开发、测试、生产等)。它可以帮助你在不同的环境中使用不同的配置文件,以便更轻松地管理应用程序的设置。
以下是 env_manager
的基本使用方法:
1. 安装 env_manager
首先,在你的 pubspec.yaml
文件中添加 env_manager
依赖:
dependencies:
flutter:
sdk: flutter
env_manager: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 配置环境
在你的项目根目录下创建不同的环境配置文件,例如:
env/dev.json
env/staging.json
env/prod.json
这些文件可以包含不同环境的配置参数,例如 API 地址、调试模式等。
env/dev.json
示例:
{
"baseUrl": "https://dev.example.com/api",
"debugMode": true
}
env/staging.json
示例:
{
"baseUrl": "https://staging.example.com/api",
"debugMode": false
}
env/prod.json
示例:
{
"baseUrl": "https://example.com/api",
"debugMode": false
}
3. 初始化 env_manager
在你的 main.dart
文件中初始化 env_manager
并加载环境配置。
import 'package:flutter/material.dart';
import 'package:env_manager/env_manager.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await EnvManager().load('env/dev.json'); // 加载开发环境配置
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Env Manager Demo',
home: Scaffold(
appBar: AppBar(
title: Text('Env Manager Demo'),
),
body: Center(
child: Text('Base URL: ${EnvManager().get('baseUrl')}'),
),
),
);
}
}
4. 切换环境
你可以通过更改 EnvManager().load()
中的配置文件路径来切换环境。例如,如果要切换到生产环境,只需将 env/dev.json
改为 env/prod.json
。
5. 获取配置值
你可以使用 EnvManager().get('key')
来获取配置值。例如:
String baseUrl = EnvManager().get('baseUrl');
bool debugMode = EnvManager().get('debugMode');