使用插件:device_info_plus
获取到手机信息之后通过Platform.isIOS
判断是安卓还是iOS,然后去取不同的对象。
iOS中获取的机型数据是 'iPhone7,1' ,然后根据下面链接中的数据,写一个函数(iOSNameTransition)他转换为 iPhone 6 Plus
www.theiphonewiki.com/wiki/Models…
class COPDDeviceInfo {
///获取设备信息
static get deviceInfo async {
final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
DeviceEntity deviceData;
AndroidDeviceInfo? androidInfo;
IosDeviceInfo? iosInfo;
if (Platform.isIOS) {
iosInfo = await deviceInfoPlugin.iosInfo;
} else {
androidInfo = await deviceInfoPlugin.androidInfo;
}
deviceData = _getDeviceEntity(androidInfo, iosInfo);
return deviceData;
}
static DeviceEntity _getDeviceEntity(
AndroidDeviceInfo? androidInfo, IosDeviceInfo? iosInfo) {
return DeviceEntity(
brand: Platform.isIOS
? COPDDeviceInfo.iOSNameTransition(iosInfo?.utsname.machine ?? "")
: "${androidInfo?.brand} ${androidInfo?.model}",
systemVersion: Platform.isIOS
? iosInfo?.systemVersion
: androidInfo?.version.release,
platform: Platform.isIOS ? iosInfo?.systemName : "Android",
isPhysicalDevice: Platform.isIOS
? iosInfo?.isPhysicalDevice
: androidInfo?.isPhysicalDevice,
uuid: Platform.isIOS
? iosInfo?.identifierForVendor
: androidInfo?.androidId);
}
///根据设备 iosInfo?.utsname.machine 转换为 手机通用名称 例如 'iPhone7,1' 转为 iPhone 6 Plus 具体机型
static String iOSNameTransition(String machine) {
switch (machine) {
case "iPod5,1":
return "iPod Touch 5";
case "iPod7,1":
return "iPod Touch 6";
case "iPhone3,1":
return "iPhone 4";
case "iPhone3,2":
return "iPhone 4";
case "iPhone3,3":
return "iPhone 4";
case "iPhone4,1":
return "iPhone 4s";
case "iPhone5,1":
return "iPhone 5";
case "iPhone5,2":
return "iPhone 5";
case "iPhone5,3":
return "iPhone 5c";
case "iPhone5,4":
return "iPhone 5c";
case "iPhone6,1":
return "iPhone 5s";
case "iPhone6,2":
return "iPhone 5s";
case "iPhone7,2":
return "iPhone 6";
case "iPhone7,1":
return "iPhone 6 Plus";
case "iPhone8,1":
return "iPhone 6s";
case "iPhone8,2":
return "iPhone 6s Plus";
case "iPhone8,4":
return "iPhone SE";
case "iPhone9,1":
return "iPhone 7";
case "iPhone9,3":
return "iPhone 7";
case "iPhone9,2":
return "iPhone 7 Plus";
case "iPhone9,4":
return "iPhone 7 Plus";
case "iPhone10,1":
return "iPhone 8";
case "iPhone10,4":
return "iPhone 8";
case "iPhone10,2":
return "iPhone 8 Plus";
case "iPhone10,5":
return "iPhone 8 Plus";
case "iPhone10,3":
return "iPhone X";
case "iPhone10,6":
return "iPhone X";
case "iPhone11,8":
return "iPhone XR";
case "iPhone11,2":
return "iPhone XS";
case "iPhone11,6":
return "iPhone XS Max";
case "iPhone11,4":
return "iPhone XS Max";
case "iPhone12,1":
return "iPhone 11";
case "iPhone12,3":
return "iPhone 11 Pro";
case "iPhone12,5":
return "iPhone 11 Pro Max";
case "iPhone13,1":
return "iPhone 12 mini";
case "iPhone13,2":
return "iPhone 12";
case "iPhone13,3":
return "iPhone 12 Pro";
case "iPhone13,4":
return "iPhone 12 Pro Max";
case "iPhone14,4":
return "iPhone 13 mini";
case "iPhone14,5":
return "iPhone 13";
case "iPhone14,2":
return "iPhone 13 Pro";
case "iPhone14,3":
return "iPhone 13 Pro Max";
case "iPad2,1":
return "iPad 2";
case "iPad2,2":
return "iPad 2";
case "iPad2,3":
return "iPad 2";
case "iPad2,4":
return "iPad 2";
case "iPad3,1":
return "iPad 3";
case "iPad3,2":
return "iPad 3";
case "iPad3,3":
return "iPad 3";
case "iPad3,4":
return "iPad 4";
case "iPad3,5":
return "iPad 4";
case "iPad3,6":
return "iPad 4";
case "iPad4,1":
return "iPad Air";
case "iPad4,2":
return "iPad Air";
case "iPad4,3":
return "iPad Air";
case "iPad5,3":
return "iPad Air 2";
case "iPad5,4":
return "iPad Air 2";
case "iPad2,5":
return "iPad Mini";
case "iPad2,6":
return "iPad Mini";
case "iPad2,7":
return "iPad Mini";
case "iPad4,4":
return "iPad Mini 2";
case "iPad4,5":
return "iPad Mini 2";
case "iPad4,6":
return "iPad Mini 2";
case "iPad4,7":
return "iPad Mini 3";
case "iPad4,8":
return "iPad Mini 3";
case "iPad4,9":
return "iPad Mini 3";
case "iPad5,1":
return "iPad Mini 4";
case "iPad5,2":
return "iPad Mini 4";
case "iPad6,7":
return "iPad Pro";
case "iPad6,8":
return "iPad Pro";
case "AppleTV5,3":
return "Apple TV";
case "i386":
return "Simulator";
case "x86_64":
return "Simulator";
default:
return "iPhone unknown";
}
}
}
class DeviceEntity {
String? brand;
String? systemVersion;
String? platform;
bool? isPhysicalDevice;
String? uuid;
DeviceEntity(
{required this.brand,
required this.systemVersion,
required this.platform,
required this.isPhysicalDevice,
required this.uuid});
}