environment_plus

A Flutter plugin that provides comprehensive environment information for your Flutter applications.

Features

  • Device Information
    • Device ID
    • Device Model
    • Operating System Version
    • Android ID (for Android devices)
    • Device Brand
    • Physical Device Status
    • Architecture Support (32/64 bit)
  • App Information
    • Package Name
    • Version
    • Build Number
    • App Name
  • Environment Information
    • Release/Debug Mode
    • Testing Environment Status
    • Platform Status (Android/iOS)
    • Status Bar Height
    • Navigation Bar Height
    • App Bar Height
  • Connectivity
    • Listen to connectivity changes (WiFi, mobile, none)
    • Get current network connection types
  • Location
    • Get current device location (latitude, longitude, etc.)
    • Listen to position changes as a stream

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  environment_plus: ^0.0.1

Usage

Before using any features, you need to initialize the plugin:

import 'package:environment_plus/environment_plus.dart';

// Initialize the plugin
await Environment.init();

// Now you can use the features
final environment = Environment();

Available Methods

// Get environment information
final environment = Environment();

// --- Environment getters ---
print('isAndroid: ${environment.isAndroid}');
print('isIOS: ${environment.isIOS}');
print('session: ${environment.session}');
print('flavor: ${environment.flavor}');
print('batteryState: ${environment.batteryState}');
print('position: ${environment.position}');
print('connection: ${environment.connection}');

// --- DeviceInfo getters ---
final deviceInfo = environment.deviceInfo;
print('brand: ${deviceInfo.brand}');
print('deviceId: ${deviceInfo.deviceId}');
print('isPhysicalDevice: ${deviceInfo.isPhysicalDevice}');
print('machineModel: ${deviceInfo.machineModel}');
print('osVersionName: ${deviceInfo.osVersionName}');
print('osVersionNumber: ${deviceInfo.osVersionNumber}');
print('support64bit: ${deviceInfo.support64bit}');
print('support32bit: ${deviceInfo.support32bit}');

// --- AppInfo getters ---
final appInfo = environment.appInfo;
print('appName: ${appInfo.appName}');
print('appId: ${appInfo.appId}');
print('buildName: ${appInfo.buildName}');
print('buildNumber: ${appInfo.buildNumber}');

// Access device information
final deviceInfo = environment.deviceInfo;
print('Device Model: ${deviceInfo.machineModel}');
print('OS Version: ${deviceInfo.osVersionName}');

// Access app information
final appInfo = environment.appInfo;
print('App Name: ${appInfo.appName}');
print('Version: ${appInfo.buildName}');

// Access environment status
print('Is Debug Mode: ${environment.isDebugMode}');
print('Is Physical Device: ${environment.deviceInfo.isPhysicalDevice}');

// Connectivity: Listen to connectivity changes
environment.onConnectivityChanged().listen((List<ConnectivityResult> results) {
  print('Connectivity changed: $results');
});

// Location: Listen to position changes
environment.onPositionChanged().listen((position) {
  print('Position changed: $position');
});

// Battery: Get current battery level
final batteryLevel = await environment.getBatteryLevel();
print('Battery Level: ${batteryLevel}%');

// Battery: Listen to battery state changes
environment.onBatteryStateChanged().listen((state) {
  print('Battery State: $state');
});

Testing

For testing purposes, you can use initFake():

await Environment.initFake(
  appInfo: AppInfo.empty(),
  deviceInfo: DeviceInfo.empty(),
);

Dependencies

This plugin depends on the following packages:

  • device_info_plus
  • package_info_plus
  • android_id
  • manifest_info_reader
  • battery_plus

Requirements

  • Flutter >= 3.3.0
  • Dart SDK >= 3.7.2

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

environment_plus