Flutter环境变量管理插件env_provider的使用

Flutter环境变量管理插件env_provider的使用

Env Provider 是一个用于与环境交互的一站式工具,永远不会抛出异常。

使用方法

平台目录

Env Provider 是 path_provider 的安全超集。因此,所有 path_provider 中的方法都可以通过 Env 访问。例如:

Result<Directory, DirectoryRetrievalError> docsDir = await Env.getApplicationDocumentsDirectory();

获取当前目录

String currentDir = Env.currentDirectory();

获取可执行文件路径

String exePath = Env.currentExe();

获取环境变量

String? variable = Env.variable('HOME');

拼接路径

String path = Env.joinPaths(['/usr/local/bin', '/usr/bin', '/bin']);
print(path); // '/usr/local/bin:/usr/bin:/bin'

列出所有环境变量

for (var (variable, value) in Env.variables()) {
  print('$variable: $value');
}

完整示例Demo

以下是一个完整的示例代码,展示了如何使用 env_provider 插件来获取和操作环境变量。

import 'package:flutter/material.dart';
import 'package:env_provider/env_provider.dart';

void main() async {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Env Provider Example")),
        body: Center(child: DisplayEnvironmentVariables()),
      ),
    );
  }
}

class DisplayEnvironmentVariables extends StatefulWidget {
  [@override](/user/override)
  _DisplayEnvironmentVariablesState createState() => _DisplayEnvironmentVariablesState();
}

class _DisplayEnvironmentVariablesState extends State<DisplayEnvironmentVariables> {
  String _currentDir = "";
  String _exePath = "";
  String _homeVariable = "";
  List<String> _allVariables = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    fetchEnvironmentVariables();
  }

  Future<void> fetchEnvironmentVariables() async {
    // 获取当前目录
    _currentDir = Env.currentDirectory();

    // 获取可执行文件路径
    _exePath = Env.currentExe();

    // 获取环境变量
    _homeVariable = Env.variable('HOME') ?? "Not Found";

    // 列出所有环境变量
    List<MapEntry<String, String>> allVariables = Env.variables();
    _allVariables = allVariables.map((entry) => '${entry.key}: ${entry.value}').toList();
    
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text("Current Directory: $_currentDir"),
        SizedBox(height: 10),
        Text("Executable Path: $_exePath"),
        SizedBox(height: 10),
        Text("Home Variable: $_homeVariable"),
        SizedBox(height: 10),
        Text("All Environment Variables:"),
        ..._allVariables.map((varPair) => Text(varPair)).toList(),
      ],
    );
  }
}

更多关于Flutter环境变量管理插件env_provider的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter环境变量管理插件env_provider的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


env_provider 是一个用于 Flutter 的环境变量管理插件,它允许你在 Flutter 应用中轻松管理和访问环境变量。这对于在不同的环境(如开发、测试、生产)中使用不同的配置非常有用。

安装 env_provider

首先,你需要在 pubspec.yaml 文件中添加 env_provider 依赖:

dependencies:
  flutter:
    sdk: flutter
  env_provider: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

使用方法

1. 创建 .env 文件

在项目根目录下创建一个 .env 文件,并在其中定义你的环境变量。例如:

API_URL=https://api.example.com
DEBUG=true

2. 在 main.dart 中初始化 EnvProvider

在你的 main.dart 文件中,初始化 EnvProvider 并加载 .env 文件:

import 'package:flutter/material.dart';
import 'package:env_provider/env_provider.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 EnvProvider 并加载 .env 文件
  await EnvProvider.load();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 访问环境变量

你可以在应用的任何地方使用 EnvProvider 来访问环境变量。例如:

import 'package:flutter/material.dart';
import 'package:env_provider/env_provider.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 访问环境变量
    final apiUrl = EnvProvider.get('API_URL');
    final debugMode = EnvProvider.get('DEBUG') == 'true';

    return Scaffold(
      appBar: AppBar(
        title: Text('Env Provider Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('API URL: $apiUrl'),
            Text('Debug Mode: $debugMode'),
          ],
        ),
      ),
    );
  }
}

其他功能

  • 多环境支持: 你可以通过创建多个 .env 文件(如 .env.dev, .env.prod),并在加载时指定要使用的环境文件。

    await EnvProvider.load(envFile: '.env.dev');
    
  • 默认值: 如果环境变量不存在,EnvProvider.get 可以提供一个默认值。

    final apiUrl = EnvProvider.get('API_URL', defaultValue: 'https://default.api.com');
回到顶部