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 _deviceData = {}; /// Initialize device info (call this in main before runApp) Future 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 get deviceData => _deviceData; /// Get a specific property from device info String? getProperty(String key) => _deviceData[key]?.toString(); }