config_services_injection.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import 'package:device_info_plus/device_info_plus.dart';
  2. import 'package:package_info_plus/package_info_plus.dart';
  3. import 'package:get/get.dart';
  4. import 'package:shared/utils/device_utils.dart';
  5. import 'package:shared/utils/log_utils.dart';
  6. import 'app_config_service.dart';
  7. /*
  8. 全局服务 Service 的初始化入口
  9. 1. 初始化 AppPackageInfo 插件,获取应用相关信息。
  10. 2. 初始化 DeviceInfo 插件,获取设备相关信息。
  11. 全局一些服务的注入与信息的保存。
  12. 注意:最好是用户同意了隐私协议之后再初始化
  13. */
  14. class ConfigServicesInjection {
  15. /// android 设备信息
  16. static AndroidDeviceInfo? androidDeviceInfo;
  17. /// ios 设备信息
  18. static IosDeviceInfo? iosDeviceInfo;
  19. /// 包信息
  20. static PackageInfo? packageInfo;
  21. /// 是否 release 包(生产环境)
  22. static bool get isRelease => const bool.fromEnvironment("dart.vm.product");
  23. /// init
  24. static Future init() async {
  25. Log.d('----ConfigServicesInjection------start-----');
  26. // device_info_plus插件获取设备信息
  27. DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
  28. if (DeviceUtils.isIOS) {
  29. ConfigServicesInjection.iosDeviceInfo = await deviceInfoPlugin.iosInfo;
  30. } else if (DeviceUtils.isAndroid) {
  31. ConfigServicesInjection.androidDeviceInfo = await deviceInfoPlugin.androidInfo;
  32. }
  33. // package_info 插件获取到App的包信息
  34. ConfigServicesInjection.packageInfo = await PackageInfo.fromPlatform();
  35. // 一些配置信息的全局单例保存 (国际化、版本信息、设备信息、主题(暗黑/明亮))
  36. Get.put<ConfigService>(ConfigService());
  37. }
  38. // 获取当前Android设备的Android版本
  39. static int getAndroidSdkInt() {
  40. if (DeviceUtils.isAndroid) {
  41. return androidDeviceInfo?.version.sdkInt ?? -1;
  42. } else {
  43. return -1;
  44. }
  45. }
  46. }