device_info_sdk 1.0.0 copy "device_info_sdk: ^1.0.0" to clipboard
device_info_sdk: ^1.0.0 copied to clipboard

A comprehensive Flutter SDK for retrieving detailed device information including hardware specs, battery status, display metrics, and platform-specific data on Android and iOS.

Device Info SDK #

pub package popularity likes pub points

A comprehensive Flutter SDK for retrieving detailed device information including hardware specifications, battery status, display metrics, and platform-specific data on Android and iOS platforms.

🌟 Features #

  • πŸ“± Device Information: Model, manufacturer, brand, OS version, device name
  • πŸ”‹ Battery Status: Level, charging state, health, temperature, voltage
  • πŸ“Ί Display Metrics: Resolution, density, DPI, screen dimensions
  • βš™οΈ Platform-Specific Data: Detailed Android and iOS system information
  • πŸ”„ Real-time Monitoring: Live battery status updates
  • πŸ“„ JSON Serialization: Full data export/import support
  • πŸ›‘οΈ Type Safety: Null-safe Dart implementation
  • 🎯 Cross-Platform: Works on Android and iOS

πŸ“¦ Installation #

Add this to your pubspec.yaml:

dependencies:
  device_info_sdk: ^1.0.0

Then run:

flutter pub get

πŸš€ Quick Start #

Basic Usage #

import 'package:device_info_sdk/device_info_sdk.dart';

void main() async {
  final sdk = DeviceInfoSDK.instance;
  final deviceInfo = await sdk.getDeviceInfo();
  
  print('Device: ${deviceInfo.model}');
  print('Platform: ${deviceInfo.platform}');
  print('Battery: ${deviceInfo.battery?.batteryLevel}%');
}

Complete Example #

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

class DeviceInfoScreen extends StatefulWidget {
  @override
  _DeviceInfoScreenState createState() => _DeviceInfoScreenState();
}

class _DeviceInfoScreenState extends State<DeviceInfoScreen> {
  DeviceInfo? _deviceInfo;
  bool _loading = true;

  @override
  void initState() {
    super.initState();
    _loadDeviceInfo();
  }

  Future<void> _loadDeviceInfo() async {
    try {
      final sdk = DeviceInfoSDK.instance;
      final deviceInfo = await sdk.getDeviceInfo();
      setState(() {
        _deviceInfo = deviceInfo;
        _loading = false;
      });
    } catch (e) {
      print('Error loading device info: $e');
      setState(() => _loading = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    if (_loading) {
      return Center(child: CircularProgressIndicator());
    }

    final device = _deviceInfo!;
    return ListView(
      padding: EdgeInsets.all(16),
      children: [
        _buildInfoCard('Device Information', [
          'Model: ${device.model}',
          'Manufacturer: ${device.manufacturer}',
          'Platform: ${device.platform}',
          'OS Version: ${device.osVersion}',
        ]),
        _buildInfoCard('Battery', [
          'Level: ${device.battery?.batteryLevel}%',
          'Status: ${device.battery?.batteryStatus}',
          'Charging: ${device.battery?.isCharging}',
        ]),
        _buildInfoCard('Display', [
          'Resolution: ${device.displayMetrics?.widthPx?.toInt()} x ${device.displayMetrics?.heightPx?.toInt()}',
          'Density: ${device.displayMetrics?.density}',
        ]),
      ],
    );
  }

  Widget _buildInfoCard(String title, List<String> items) {
    return Card(
      margin: EdgeInsets.only(bottom: 16),
      child: Padding(
        padding: EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(title, style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            SizedBox(height: 8),
            ...items.map((item) => Text(item)).toList(),
          ],
        ),
      ),
    );
  }
}

πŸ“Š Data Structure #

Android Data Format #

{
  "platform": "Android",
  "model": "SM-G960F",
  "manufacturer": "samsung",
  "brand": "samsung",
  "operatingSystem": "Android",
  "osVersion": "10",
  "deviceId": "QP1A.190711.020",
  "deviceName": "starlte",
  "serialNumber": "unknown",
  "battery": {
    "batteryLevel": 75,
    "batteryStatus": "charging",
    "isCharging": true,
    "batteryHealth": "good",
    "batteryTechnology": "Li-ion",
    "batteryTemperature": 28.5,
    "batteryVoltage": 4.2
  },
  "displayMetrics": {
    "widthPx": 1080.0,
    "heightPx": 2220.0,
    "density": 2.75,
    "xDpi": 428.625,
    "yDpi": 427.18
  },
  "platformSpecific": {
    "product": "starltexx",
    "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
    "version": {
      "sdkInt": 29,
      "release": "10",
      "securityPatch": "2022-03-01"
    }
  }
}

iOS Data Format #

{
  "platform": "iOS",
  "model": "iPhone",
  "manufacturer": "Apple",
  "operatingSystem": "iOS",
  "osVersion": "17.5.1",
  "deviceName": "John's iPhone",
  "battery": {
    "batteryLevel": 68,
    "batteryStatus": "discharging",
    "isCharging": false,
    "isPowerSaveMode": true
  },
  "platformSpecific": {
    "name": "John's iPhone",
    "systemName": "iOS",
    "systemVersion": "17.5.1",
    "model": "iPhone",
    "localizedModel": "iPhone",
    "identifierForVendor": "F1A2B3C4-D5E6-7890-1234-56789ABCDEF0",
    "isPhysicalDevice": true,
    "utsname": {
      "sysname": "Darwin",
      "machine": "iPhone16,1",
      "release": "23.5.0"
    }
  }
}

πŸ”§ API Reference #

DeviceInfoSDK #

Main SDK class for retrieving device information.

// Get singleton instance
final sdk = DeviceInfoSDK.instance;

// Get complete device information
Future<DeviceInfo> getDeviceInfo()

// Get real-time battery updates
Stream<BatteryInfo> getBatteryStream()

DeviceInfo #

Main model containing all device information.

class DeviceInfo {
  final String platform;                    // "Android" or "iOS"
  final String? model;                      // Device model
  final String? manufacturer;               // Device manufacturer
  final String? brand;                      // Device brand
  final String operatingSystem;             // Operating system name
  final String? osVersion;                  // OS version
  final String deviceId;                    // Unique device identifier
  final String? deviceName;                 // Device name
  final String? serialNumber;               // Serial number (if available)
  final double? screenWidth;                // Screen width in pixels
  final double? screenHeight;               // Screen height in pixels
  final double? screenDensity;              // Screen density
  final DisplayMetrics? displayMetrics;     // Detailed display information
  final bool? hasPhysicalKeyboard;          // Has physical keyboard
  final bool? hasTouchScreen;               // Has touch screen
  final String? cpuArchitecture;            // CPU architecture
  final bool? isRooted;                     // Is device rooted/jailbroken
  final BatteryInfo? battery;               // Battery information
  final Map<String, dynamic>? platformSpecific; // Platform-specific data
}

BatteryInfo #

Battery status and health information.

class BatteryInfo {
  final int batteryLevel;                   // Battery level (0-100)
  final String batteryStatus;               // Battery status
  final bool isCharging;                    // Is currently charging
  final bool isFull;                        // Is battery full
  final bool isLow;                         // Is battery low
  final bool isPowerSaveMode;               // Is power save mode enabled
  final String? batteryHealth;              // Battery health (Android)
  final String? batteryTechnology;          // Battery technology (Android)
  final double? batteryTemperature;         // Battery temperature (Android)
  final double? batteryVoltage;             // Battery voltage (Android)
}

DisplayMetrics #

Display and screen information.

class DisplayMetrics {
  final double? widthPx;                    // Screen width in pixels
  final double? heightPx;                   // Screen height in pixels
  final double? xDpi;                       // X-axis DPI
  final double? yDpi;                       // Y-axis DPI
  final double? density;                    // Screen density
  final double? densityDpi;                 // Density in DPI
}

πŸ§ͺ Testing #

Run tests:

flutter test

Run example:

cd example
flutter run

πŸ“‹ Requirements #

  • Flutter: 3.0.0 or higher
  • Dart: 3.0.0 or higher
  • Android: API level 16 (Android 4.1) or higher
  • iOS: iOS 12.0 or higher

🀝 Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License #

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

πŸ› Issues #

If you encounter any issues, please create an issue on GitHub.

πŸ™ Acknowledgments #

This package uses the following Flutter plugins:

0
likes
140
points
126
downloads

Publisher

unverified uploader

Weekly Downloads

A comprehensive Flutter SDK for retrieving detailed device information including hardware specs, battery status, display metrics, and platform-specific data on Android and iOS.

Repository (GitHub)
View/report issues

Topics

#device-info #hardware #battery #android #ios

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

battery_plus, connectivity_plus, device_info_plus, flutter, package_info_plus

More

Packages that depend on device_info_sdk