mirror of
https://github.com/localsend/localsend.git
synced 2026-08-07 07:14:52 +00:00
88 lines
2.5 KiB
Dart
88 lines
2.5 KiB
Dart
import 'package:device_info_plus/device_info_plus.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:localsend_isolates/model/device.dart';
|
|
import 'package:localsend_isolates/model/device_info_result.dart';
|
|
// ignore: implementation_imports
|
|
import 'package:slang/src/builder/model/enums.dart';
|
|
// ignore: implementation_imports
|
|
import 'package:slang/src/builder/utils/string_extensions.dart';
|
|
|
|
Future<DeviceInfoResult> getDeviceInfo() async {
|
|
final plugin = DeviceInfoPlugin();
|
|
final DeviceType deviceType;
|
|
final String? deviceModel;
|
|
int? androidSdkInt;
|
|
|
|
if (kIsWeb) {
|
|
deviceType = DeviceType.web;
|
|
final deviceInfo = await plugin.webBrowserInfo;
|
|
deviceModel = deviceInfo.browserName.humanName;
|
|
} else {
|
|
switch (defaultTargetPlatform) {
|
|
case TargetPlatform.android:
|
|
case TargetPlatform.iOS:
|
|
deviceType = DeviceType.mobile;
|
|
break;
|
|
case TargetPlatform.linux:
|
|
case TargetPlatform.macOS:
|
|
case TargetPlatform.windows:
|
|
case TargetPlatform.fuchsia:
|
|
deviceType = DeviceType.desktop;
|
|
break;
|
|
}
|
|
|
|
switch (defaultTargetPlatform) {
|
|
case TargetPlatform.android:
|
|
final deviceInfo = await plugin.androidInfo;
|
|
deviceModel = deviceInfo.brand.toCase(CaseStyle.pascal);
|
|
androidSdkInt = deviceInfo.version.sdkInt;
|
|
break;
|
|
case TargetPlatform.iOS:
|
|
final deviceInfo = await plugin.iosInfo;
|
|
deviceModel = deviceInfo.localizedModel;
|
|
break;
|
|
case TargetPlatform.linux:
|
|
deviceModel = 'Linux';
|
|
break;
|
|
case TargetPlatform.macOS:
|
|
deviceModel = 'macOS';
|
|
break;
|
|
case TargetPlatform.windows:
|
|
deviceModel = 'Windows';
|
|
break;
|
|
case TargetPlatform.fuchsia:
|
|
deviceModel = 'Fuchsia';
|
|
break;
|
|
}
|
|
}
|
|
|
|
return DeviceInfoResult(
|
|
deviceType: deviceType,
|
|
deviceModel: deviceModel,
|
|
androidSdkInt: androidSdkInt,
|
|
);
|
|
}
|
|
|
|
extension on BrowserName {
|
|
String? get humanName {
|
|
switch (this) {
|
|
case BrowserName.firefox:
|
|
return 'Firefox';
|
|
case BrowserName.samsungInternet:
|
|
return 'Samsung Internet';
|
|
case BrowserName.opera:
|
|
return 'Opera';
|
|
case BrowserName.msie:
|
|
return 'Internet Explorer';
|
|
case BrowserName.edge:
|
|
return 'Microsoft Edge';
|
|
case BrowserName.chrome:
|
|
return 'Google Chrome';
|
|
case BrowserName.safari:
|
|
return 'Safari';
|
|
case BrowserName.unknown:
|
|
return null;
|
|
}
|
|
}
|
|
}
|