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

1 回复

更多关于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');
回到顶部