init static method

Future<BaseDeviceInfo> init({
  1. DeviceInfoPlugin? plugin,
})

初始化设备信息,可传入已有的平台适配插件。

Implementation

static Future<BaseDeviceInfo> init({DeviceInfoPlugin? plugin}) async {
  final tmp = await (plugin ?? DeviceInfoPlugin()).deviceInfo;
  deviceInfo = tmp;
  if (tmp is AndroidDeviceInfo) {
    deviceModel = tmp.model;
    deviceBrand = tmp.brand;
    deviceName = tmp.product;
    deviceSystemVersion = "${tmp.version.sdkInt}";
    deviceIsPhysicalDevice = tmp.isPhysicalDevice;
  } else if (tmp is IosDeviceInfo) {
    deviceModel = tmp.utsname.machine;
    deviceBrand = tmp.model;
    deviceName = tmp.name;
    deviceSystemVersion = tmp.systemVersion;
    deviceIsPhysicalDevice = tmp.isPhysicalDevice;
  } else if (tmp is MacOsDeviceInfo) {
    deviceModel = tmp.model;
    deviceBrand = "Mac";
    deviceName = tmp.computerName;
    deviceSystemVersion = tmp.osRelease;
    deviceIsPhysicalDevice = true;
  } else if (tmp is WebBrowserInfo) {
    deviceModel = tmp.appName ?? "";
    deviceBrand = tmp.appCodeName ?? "";
    deviceName = tmp.browserName.name;
    deviceSystemVersion = tmp.appVersion ?? "";
    deviceIsPhysicalDevice = true;
  } else if (isOhos) {
    // 已有鸿蒙插件通过标准通道返回 BaseDeviceInfo,无需在主包引入平台包。
    final data = tmp.data;
    deviceModel = data['productModel'] as String? ?? '';
    deviceBrand = data['brand'] as String? ?? '';
    deviceName = data['marketName'] as String? ?? '';
    final osVersion = data['distributionOSVersion'] as String? ?? '';
    deviceSystemVersion = osVersion.isNotEmpty
        ? osVersion
        : data['displayVersion'] as String? ?? '';
    deviceIsPhysicalDevice = data['isPhysicalDevice'] as bool? ?? true;
  }
  return deviceInfo;
}