init static method
初始化设备信息,可传入已有的平台适配插件。
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;
}