Flutter环境配置管理插件enviroment_flavor的使用

Flutter环境配置管理插件enviroment_flavor的使用

简介

enviroment_flavor 是一个用于管理简单环境变量的 Flutter 包。

开始使用

在你的 Flutter 项目中,将依赖添加到 pubspec.yaml 文件中:

dependencies:
  ...
  enviroment_flavor: ^2.0.2

使用方法

1. 导入

在需要使用的 Dart 文件中导入 enviroment_flavor

import 'package:enviroment_flavor/enviroment_flavor.dart';

2. 创建实例

在主文件中创建实例:

EnviromentFlavor.create(Enviroments.DEV, baseURL: "google.com");

3. 在任何地方使用

例如,在自定义的 Dio 实例中使用:

CustomDio() {
  _dio = Dio(
    BaseOptions(
      baseUrl: EnviromentConfig.instance.baseURL,
    ),
  );
}

完整示例

以下是一个完整的示例,展示了如何使用 enviroment_flavor 插件:

import 'package:enviroment_flavor/enviroment_flavor.dart';
import 'package:flutter/cupertino.dart';

void main() async {
  // 创建环境实例并设置默认值
  EnviromentFlavor.create(Enviroments.DEV, baseURL: "google.com");

  // 打印当前环境是否为生产环境
  print('isProd: ${EnviromentFlavor().isProd}');
  
  // 打印当前环境的基础 URL
  print('baseURL: ${EnviromentFlavor().baseURL}');

  // 添加自定义属性
  EnviromentFlavor().addProperties({'active': true, 'inactive': false});
  
  // 打印自定义属性
  print(
    'Properties: ${EnviromentFlavor().getProperties(['active', 'inactive'])}',
  );

  // 确保 Flutter 绑定初始化
  WidgetsFlutterBinding.ensureInitialized();

  // 添加应用版本信息
  await EnviromentFlavor().addPropertyAppVersion();
  
  // 打印应用版本信息
  print(
    'App version: ${EnviromentFlavor().getProperties(['appVersion', 'buildNumber'])}',
  );
}

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

1 回复

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


在Flutter项目中,使用environment_config或类似的插件可以帮助你管理不同环境(如开发、测试、生产)的配置。虽然你提到的是enviroment_flavor(注意可能是拼写错误,常见的包名是flutter_flavorizrflutter_env等),但基于你的需求,这里我将展示如何使用一个类似的插件flutter_dotenv来实现环境配置管理。这个插件允许你从.env文件中读取配置,并在Flutter应用中使用。

步骤 1: 添加依赖

首先,在你的pubspec.yaml文件中添加flutter_dotenv依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_dotenv: ^5.0.2  # 请检查最新版本号

步骤 2: 创建.env文件

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

# .env
API_URL=https://api.dev.example.com
FEATURE_FLAG_NEW_UI=true

你还可以为不同的环境创建多个.env文件,如.env.development.env.production等。

步骤 3: 配置flutter_dotenv

lib目录下创建一个新的Dart文件,比如env_config.dart,用于加载环境变量:

// lib/env_config.dart
import 'package:flutter_dotenv/flutter_dotenv.dart';

class EnvConfig {
  static late String apiUrl;
  static late bool featureFlagNewUI;

  static Future<void> load() async {
    // 加载.env文件,你可以根据Flutter的Flavor来加载不同的.env文件
    String envFile = '.env'; // 默认.env文件
    // 如果使用flavor,可以动态设置envFile,例如:'.env.${kReleaseMode ? 'production' : 'development'}'
    // 注意:kReleaseMode需要在build.gradle中正确设置

    await dotenv.load(fileName: envFile);

    apiUrl = dotenv.env['API_URL'] ?? 'https://default-api-url.com';
    featureFlagNewUI = dotenv.env['FEATURE_FLAG_NEW_UI']?.toLowerCase() == 'true';
  }
}

步骤 4: 在应用中使用环境变量

在你的main.dart文件中,确保在应用启动时加载环境配置:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await EnvConfig.load();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Demo Home Page'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('API URL: ${EnvConfig.apiUrl}'),
              Text('Feature Flag New UI: ${EnvConfig.featureFlagNewUI.toString()}'),
            ],
          ),
        ),
      ),
    );
  }
}

步骤 5: 根据Flutter Flavors配置(可选)

如果你使用Flutter Flavors,你需要在android/app/build.gradleios/Runner/Info.plist中进行相应的配置。这里只展示Android的配置示例:

// android/app/build.gradle
android {
    ...
    flavorDimensions "version"
    productFlavors {
        dev {
            dimension "version"
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
            buildConfigField "String", "FLAVOR", "\"dev\""
        }
        prod {
            dimension "version"
            ...
            buildConfigField "String", "FLAVOR", "\"prod\""
        }
    }
}

然后在env_config.dart中根据BuildConfig.FLAVOR来动态加载不同的.env文件。

// lib/env_config.dart (修改load方法)
import 'package:flutter/foundation.dart' show kDebugMode;

static Future<void> load() async {
  String envFile = kDebugMode ? '.env.development' : '.env.production';
  // 或者使用BuildConfig.FLAVOR(需要导入生成的BuildConfig类)
  // String envFile = '${BuildConfig.FLAVOR.toLowerCase()}.env';

  await dotenv.load(fileName: envFile);
  ...
}

注意:由于BuildConfig是Android特有的,如果你需要跨平台地识别Flavor,可能需要额外的逻辑或使用其他插件如flutter_flavorizr

以上是使用flutter_dotenv进行环境配置管理的一个基本示例。根据你的具体需求,你可能需要调整代码以适应你的项目结构和工作流程。

回到顶部