current method

Future<DeviceInfo?> current()

Implementation

Future<DeviceInfo?> current() async {
  final deviceInfo = DeviceInfoPlugin();
  switch (OperatingSystemName.current()) {
    case OperatingSystemName.iOS:
      final info = await deviceInfo.iosInfo;
      return DeviceInfo(
        operatingSystem: OperatingSystemName.iOS,
        operatingSystemVersion: info.systemVersion,
        deviceManufacturer: "Apple",
        deviceModel: info.utsname.machine,
      );

    case OperatingSystemName.android:
      final info = await deviceInfo.androidInfo;
      return DeviceInfo(
        operatingSystem: OperatingSystemName.android,
        operatingSystemVersion: info.version.release,
        deviceManufacturer: "Android",
        deviceModel: info.model,
      );

    case OperatingSystemName.macOS:
      final info = await deviceInfo.macOsInfo;
      return DeviceInfo(
        operatingSystem: OperatingSystemName.macOS,
        operatingSystemVersion: info.osRelease,
        deviceManufacturer: "Apple",
        deviceModel: info.model,
      );

    case OperatingSystemName.windows:
      // The required data for this is not available on windows.
      // This will need to be updated in the future.
      return null;

    case OperatingSystemName.linux:
      // The required data for this is not available on windows.
      // This will need to be updated in the future.
      return null;

    case OperatingSystemName.web:
      final info = await deviceInfo.webBrowserInfo;
      return DeviceInfo(
        operatingSystem: info.operatingSystem,
        operatingSystemVersion: null,
        deviceManufacturer: null,
        deviceModel: null,
        userAgent: info.userAgent,
        browserName: info.browserName.name,
        browserVersion: info.appVersion,
      );

    case OperatingSystemName.unknown:
      return const DeviceInfo(
        operatingSystem: OperatingSystemName.unknown,
        operatingSystemVersion: null,
        deviceManufacturer: "Unknown",
        deviceModel: "Unknown",
      );
  }
}