FLutter获取设备信息

1,223 阅读2分钟

使用插件: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});
}