device_info_sdk 1.0.0
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 #
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.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - 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: