current static method
Get current device info - called fresh each time. Note: deviceId is async, so use DeviceInfo.fetchCurrent() for full info.
Implementation
static DeviceInfo current(String deviceId) {
// Architecture
String architecture;
if (Platform.isIOS || Platform.isMacOS) {
// ARM64 on Apple Silicon, x86_64 on Intel
architecture = 'arm64'; // Assume ARM64 for modern devices
} else if (Platform.isAndroid) {
architecture = 'arm64'; // Most Android devices are ARM64
} else {
architecture = 'x86_64';
}
// Platform and device type
String platformName;
String deviceType;
String formFactor;
String modelIdentifier;
String modelName;
if (Platform.isIOS) {
platformName = 'iOS';
deviceType = 'mobile';
formFactor = 'phone';
modelIdentifier = 'iPhone'; // Would need platform channel for real value
modelName = 'iPhone';
} else if (Platform.isAndroid) {
platformName = 'android';
deviceType = 'mobile';
formFactor = 'phone';
modelIdentifier = 'Android'; // Would need platform channel for real value
modelName = 'Android Device';
} else if (Platform.isMacOS) {
platformName = 'macOS';
deviceType = 'desktop';
formFactor = 'desktop';
modelIdentifier = 'Mac';
modelName = 'Mac';
} else if (Platform.isLinux) {
platformName = 'linux';
deviceType = 'desktop';
formFactor = 'desktop';
modelIdentifier = 'Linux';
modelName = 'Linux Device';
} else if (Platform.isWindows) {
platformName = 'windows';
deviceType = 'desktop';
formFactor = 'desktop';
modelIdentifier = 'Windows';
modelName = 'Windows Device';
} else {
platformName = 'unknown';
deviceType = 'unknown';
formFactor = 'unknown';
modelIdentifier = 'Unknown';
modelName = 'Unknown Device';
}
return DeviceInfo(
deviceId: deviceId,
modelIdentifier: modelIdentifier,
modelName: modelName,
architecture: architecture,
osVersion: Platform.operatingSystemVersion,
platform: platformName,
deviceType: deviceType,
formFactor: formFactor,
totalMemory: 0, // Would need platform channel
processorCount: Platform.numberOfProcessors,
);
}