zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

flutter 获取手机设备信息和APP信息

App设备flutter手机 获取 信息
2023-09-14 09:04:29 时间

参考
找到了两个比较有用的插件记录一下

1. #获取应用的数据信息 package_info_plus: ^1.4.2
2. #获取当前运行平台信息 device_info_plus: ^3.2.3

使用方法
1.引入

dependencies:
  #获取应用的数据信息
  package_info_plus: ^1.4.2
  #获取当前运行平台信息
  device_info_plus: ^3.2.3

使用
package_info_plus 插件返回信息有限只能返回五个把 感觉有用的就只有这三个了.图标可以自己写原生交互传到Flutter 不过我偷懒直接丢在assets里面去了…

    PackageInfo info =  await PackageInfo.fromPlatform();
    appName = info.appName;
    buildNumber = info.buildNumber;
    version = info.version;

device_info_plus 这个插件返回的数据很多也很乱 每个平台返回的还是不一样的类 我简单的做了一个整合提取了需要的东西…

  ///获取设备信息
  static get deviceInfo async {
    final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
    Map<String, dynamic> deviceData = <String, dynamic>{};
    AndroidDeviceInfo? androidInfo;
    IosDeviceInfo? iosInfo;
    if (Platform.isIOS) {
      iosInfo = await deviceInfoPlugin.iosInfo;
    } else {
      androidInfo = await deviceInfoPlugin.androidInfo;
    }
    deviceData = _readDeviceInfo(androidInfo, iosInfo);
    return deviceData;
  }

  static _readDeviceInfo(
      AndroidDeviceInfo? androidInfo, IosDeviceInfo? iosInfo) {
    Map<String, dynamic> data = <String, dynamic>{
      //手机品牌加型号
      "brand": Platform.isIOS
          ? iosInfo?.name
          : "${androidInfo?.brand} ${androidInfo?.model}",
      //当前系统版本
      "systemVersion": Platform.isIOS
          ? iosInfo?.systemVersion
          : androidInfo?.version.release,
      //系统名称
      "Platform": Platform.isIOS ? iosInfo?.systemName : "Android",
      //是不是物理设备
      "isPhysicalDevice": Platform.isIOS
          ? iosInfo?.isPhysicalDevice
          : androidInfo?.isPhysicalDevice,
      //用户唯一识别码
      "uuid": Platform.isIOS
          ? iosInfo?.identifierForVendor
          : androidInfo?.androidId,
      //手机具体的固件型号/Ui版本
      "incremental": Platform.isIOS
          ? iosInfo?.systemVersion
          : androidInfo?.version.incremental,
    };
    return data;
  }