diff --git a/packages/device_info_plus/device_info_plus/example/lib/main.dart b/packages/device_info_plus/device_info_plus/example/lib/main.dart index 5a70d40dc7..d65da9d85e 100644 --- a/packages/device_info_plus/device_info_plus/example/lib/main.dart +++ b/packages/device_info_plus/device_info_plus/example/lib/main.dart @@ -129,6 +129,7 @@ class _MyAppState extends State { 'identifierForVendor': data.identifierForVendor, 'isPhysicalDevice': data.isPhysicalDevice, 'isiOSAppOnMac': data.isiOSAppOnMac, + 'isiOSAppOnVision': data.isiOSAppOnVision, 'freeDiskSize': data.freeDiskSize, 'totalDiskSize': data.totalDiskSize, 'physicalRamSize': data.physicalRamSize, diff --git a/packages/device_info_plus/device_info_plus/ios/device_info_plus/Sources/device_info_plus/FPPDeviceInfoPlusPlugin.m b/packages/device_info_plus/device_info_plus/ios/device_info_plus/Sources/device_info_plus/FPPDeviceInfoPlusPlugin.m index 9e3ee569cf..83a9a00e75 100644 --- a/packages/device_info_plus/device_info_plus/ios/device_info_plus/Sources/device_info_plus/FPPDeviceInfoPlusPlugin.m +++ b/packages/device_info_plus/device_info_plus/ios/device_info_plus/Sources/device_info_plus/FPPDeviceInfoPlusPlugin.m @@ -30,6 +30,10 @@ - (void)handleMethodCall:(FlutterMethodCall *)call if (@available(iOS 14.0, *)) { isiOSAppOnMac = [NSNumber numberWithBool:[info isiOSAppOnMac]]; } + NSNumber *isiOSAppOnVision = [NSNumber numberWithBool:NO]; + if (@available(iOS 26.1, *)) { + isiOSAppOnVision = [NSNumber numberWithBool:[info isiOSAppOnVision]]; + } NSError *error = nil; NSDictionary *fsAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; NSNumber *freeSize = [NSNumber numberWithInt:-1]; @@ -64,6 +68,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call @"totalDiskSize" : totalSize, @"isPhysicalDevice" : isPhysicalNumber, @"isiOSAppOnMac" : isiOSAppOnMac, + @"isiOSAppOnVision" : isiOSAppOnVision, @"physicalRamSize" : physicalRamSize, @"availableRamSize" : availableRamSize, @"utsname" : @{ diff --git a/packages/device_info_plus/device_info_plus/lib/src/model/ios_device_info.dart b/packages/device_info_plus/device_info_plus/lib/src/model/ios_device_info.dart index def717e922..db353028b0 100644 --- a/packages/device_info_plus/device_info_plus/lib/src/model/ios_device_info.dart +++ b/packages/device_info_plus/device_info_plus/lib/src/model/ios_device_info.dart @@ -25,6 +25,7 @@ class IosDeviceInfo extends BaseDeviceInfo { required this.physicalRamSize, required this.availableRamSize, required this.isiOSAppOnMac, + required this.isiOSAppOnVision, required this.utsname, }) : super(data); @@ -73,6 +74,10 @@ class IosDeviceInfo extends BaseDeviceInfo { /// https://developer.apple.com/documentation/foundation/nsprocessinfo/3608556-iosapponmac final bool isiOSAppOnMac; + /// Indicates whether the process is an iPhone or iPad app running on visionOS. + /// https://developer.apple.com/documentation/foundation/processinfo/isiosapponvision + final bool isiOSAppOnVision; + /// Operating system information derived from `sys/utsname.h`. final IosUtsname utsname; @@ -99,6 +104,7 @@ class IosDeviceInfo extends BaseDeviceInfo { physicalRamSize: map['physicalRamSize'], availableRamSize: map['availableRamSize'], isiOSAppOnMac: map['isiOSAppOnMac'], + isiOSAppOnVision: map['isiOSAppOnVision'], utsname: IosUtsname._fromMap( map['utsname']?.cast() ?? {}, ), @@ -119,6 +125,7 @@ class IosDeviceInfo extends BaseDeviceInfo { String? identifierForVendor, required bool isPhysicalDevice, required bool isiOSAppOnMac, + required bool isiOSAppOnVision, required int physicalRamSize, required int availableRamSize, required IosUtsname utsname, @@ -135,6 +142,7 @@ class IosDeviceInfo extends BaseDeviceInfo { 'totalDiskSize': totalDiskSize, 'isPhysicalDevice': isPhysicalDevice, 'isiOSAppOnMac': isiOSAppOnMac, + 'isiOSAppOnVision': isiOSAppOnVision, 'physicalRamSize': physicalRamSize, 'availableRamSize': availableRamSize, 'utsname': { @@ -158,6 +166,7 @@ class IosDeviceInfo extends BaseDeviceInfo { totalDiskSize: totalDiskSize, isPhysicalDevice: isPhysicalDevice, isiOSAppOnMac: isiOSAppOnMac, + isiOSAppOnVision: isiOSAppOnVision, physicalRamSize: physicalRamSize, availableRamSize: availableRamSize, utsname: utsname, diff --git a/packages/device_info_plus/device_info_plus/test/model/ios_device_info_test.dart b/packages/device_info_plus/device_info_plus/test/model/ios_device_info_test.dart index 5cf47597ec..cd75a8e2f4 100644 --- a/packages/device_info_plus/device_info_plus/test/model/ios_device_info_test.dart +++ b/packages/device_info_plus/device_info_plus/test/model/ios_device_info_test.dart @@ -22,6 +22,7 @@ void main() { 'systemName': 'systemName', 'isPhysicalDevice': true, 'isiOSAppOnMac': true, + 'isiOSAppOnVision': true, 'physicalRamSize': 8192, 'availableRamSize': 4096, 'systemVersion': 'systemVersion', @@ -40,6 +41,7 @@ void main() { expect(iosDeviceInfo.modelName, 'modelName'); expect(iosDeviceInfo.isPhysicalDevice, isTrue); expect(iosDeviceInfo.isiOSAppOnMac, isTrue); + expect(iosDeviceInfo.isiOSAppOnVision, isTrue); expect(iosDeviceInfo.physicalRamSize, 8192); expect(iosDeviceInfo.availableRamSize, 4096); expect(iosDeviceInfo.systemName, 'systemName');