getDeviceInfo static method
Static method to gather device information for all supported platforms.
Implementation
static Future<DeviceInfo> getDeviceInfo() async {
final deviceInfoPlugin = DeviceInfoPlugin();
if (kIsWeb) {
final webInfo = await deviceInfoPlugin.webBrowserInfo;
return DeviceInfo(
deviceName: webInfo.browserName.name,
deviceModel: webInfo.vendor ?? "Unknown Vendor",
operatingSystem: "Web",
systemVersion: webInfo.userAgent ?? "Unknown UserAgent",
deviceUuid: "Unavailable on Web",
isPhysicalDevice: false,
);
} else if (Platform.isAndroid) {
final androidInfo = await deviceInfoPlugin.androidInfo;
return DeviceInfo(
deviceName: androidInfo.device,
deviceModel: androidInfo.model,
operatingSystem: "Android",
systemVersion: androidInfo.version.release,
deviceUuid: androidInfo.id,
isPhysicalDevice: androidInfo.isPhysicalDevice,
);
} else if (Platform.isIOS) {
final iosInfo = await deviceInfoPlugin.iosInfo;
return DeviceInfo(
deviceName: iosInfo.name,
deviceModel: iosInfo.model,
operatingSystem: "iOS",
systemVersion: iosInfo.systemVersion,
deviceUuid: iosInfo.identifierForVendor ?? "Unknown UUID",
isPhysicalDevice: iosInfo.isPhysicalDevice,
);
} else if (Platform.isMacOS) {
final macInfo = await deviceInfoPlugin.macOsInfo;
return DeviceInfo(
deviceName: macInfo.computerName,
deviceModel: "Mac", // macOS does not provide specific model information
operatingSystem: "macOS",
systemVersion: macInfo.osRelease,
deviceUuid: "Unavailable on macOS",
isPhysicalDevice: true,
);
} else if (Platform.isWindows) {
final windowsInfo = await deviceInfoPlugin.windowsInfo;
return DeviceInfo(
deviceName: windowsInfo.computerName,
deviceModel:
"Windows Device", // Windows does not provide specific model information
operatingSystem: "Windows",
systemVersion: windowsInfo.productName,
deviceUuid: "Unavailable on Windows",
isPhysicalDevice: true,
);
} else if (Platform.isLinux) {
final linuxInfo = await deviceInfoPlugin.linuxInfo;
return DeviceInfo(
deviceName: linuxInfo.name,
deviceModel: linuxInfo.prettyName,
operatingSystem: "Linux",
systemVersion: linuxInfo.version ?? "Unknown Version",
deviceUuid: "Unavailable on Linux",
isPhysicalDevice: true,
);
} else {
throw UnsupportedError("Unsupported platform");
}
}