52 lines
1.7 KiB
Dart
52 lines
1.7 KiB
Dart
import 'dart:io';
|
|
import 'package:device_info_plus/device_info_plus.dart';
|
|
|
|
class DeviceInfoService {
|
|
static final DeviceInfoService _instance = DeviceInfoService._internal();
|
|
factory DeviceInfoService() => _instance;
|
|
DeviceInfoService._internal();
|
|
|
|
final DeviceInfoPlugin _deviceInfoPlugin = DeviceInfoPlugin();
|
|
Map<String, dynamic> _deviceData = {};
|
|
|
|
/// Initialize device info (call this in main before runApp)
|
|
Future<void> init() async {
|
|
try {
|
|
if (Platform.isAndroid) {
|
|
final androidInfo = await _deviceInfoPlugin.androidInfo;
|
|
_deviceData = {
|
|
'platform': 'Android',
|
|
'manufacturer': androidInfo.manufacturer,
|
|
'model': androidInfo.model,
|
|
'version': androidInfo.version.release,
|
|
'sdkInt': androidInfo.version.sdkInt,
|
|
'brand': androidInfo.brand,
|
|
'device': androidInfo.device,
|
|
'androidId': androidInfo.id,
|
|
};
|
|
} else if (Platform.isIOS) {
|
|
final iosInfo = await _deviceInfoPlugin.iosInfo;
|
|
_deviceData = {
|
|
'platform': 'iOS',
|
|
'name': iosInfo.name,
|
|
'systemName': iosInfo.systemName,
|
|
'systemVersion': iosInfo.systemVersion,
|
|
'model': iosInfo.model,
|
|
'localizedModel': iosInfo.localizedModel,
|
|
'identifierForVendor': iosInfo.identifierForVendor,
|
|
};
|
|
} else {
|
|
_deviceData = {'platform': 'Unknown'};
|
|
}
|
|
} catch (e) {
|
|
_deviceData = {'error': 'Failed to get device info: $e'};
|
|
}
|
|
}
|
|
|
|
/// Get the whole device info map
|
|
Map<String, dynamic> get deviceData => _deviceData;
|
|
|
|
/// Get a specific property from device info
|
|
String? getProperty(String key) => _deviceData[key]?.toString();
|
|
}
|