getUserAgent method

  1. @visibleForTesting
Future<String?> getUserAgent({
  1. DeviceInfoPlugin? deviceInfoPlugin,
})

Implementation

@visibleForTesting
Future<String?> getUserAgent({
  DeviceInfoPlugin? deviceInfoPlugin,
}) async {
  try {
    final effectiveDeviceInfo = deviceInfoPlugin ?? DeviceInfoPlugin();
    if (_platformInfo.isWeb) {
      final webBrowserInfo = await effectiveDeviceInfo.webBrowserInfo;

      return webBrowserInfo.userAgent;
    } else if (_platformInfo.isAndroid) {
      final androidInfo = await effectiveDeviceInfo.androidInfo;
      final release = androidInfo.version.release;
      final sdkInt = androidInfo.version.sdkInt;
      final manufacturer = androidInfo.manufacturer;
      final model = androidInfo.model;

      return 'Android $release (SDK $sdkInt), $manufacturer $model';
    } else if (_platformInfo.isIOS) {
      final iosInfo = await effectiveDeviceInfo.iosInfo;
      final systemName = iosInfo.systemName;
      final version = iosInfo.systemVersion;
      final model = iosInfo.model;

      return '$systemName $version, $model';
    } else if (_platformInfo.isWindows) {
      final windowsInfo = await effectiveDeviceInfo.windowsInfo;
      final releaseId = windowsInfo.releaseId;
      final buildNumber = windowsInfo.buildNumber;

      return 'Windows $releaseId.$buildNumber';
    } else if (_platformInfo.isMacOS) {
      final macInfo = await effectiveDeviceInfo.macOsInfo;
      final model = macInfo.model;
      final version = macInfo.kernelVersion;
      final release = macInfo.osRelease;

      return '$model, $version, $release';
    } else if (_platformInfo.isLinux) {
      final linuxInfo = await effectiveDeviceInfo.linuxInfo;

      return linuxInfo.prettyName;
    } else {
      return 'Unknown';
    }
  } catch (e) {
    return 'Unknown';
  }
}