第二百七十三回

文章目录

  • 1. 概念介绍
  • 2. 方法与信息
    • 2.1 获取方法
    • 2.2 详细信息
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"蓝牙综合示例"相关的内容,本章回中将介绍如何获取设备信息.闲话休提,让我们一起Talk Flutter吧。

第二百七十三回_第1张图片

1. 概念介绍

我们在本章回中获取的设备信息主要指手机的硬件和软件参数,比如手机屏幕的分辨率,手机上系统的版本号。如果是原生开发的话,使用官方提供的接口就可以实现,但
是在Flutter开发中没有类似的接口,怎么办呢?本章回中将给大家介绍如何去获取这些设备信息。

2. 方法与信息

2.1 获取方法

我们想要获取的设备信息可以通过device_info_plus这个三方包实现,该包提供了相关的接口来获取设备信息。详细的使用方法如下:

  • 添加包的信息到yaml配置文件中,然后通过get命令获取包;
  • 创建包中提供的DeviceInfoPlugin类型对象;
  • 从对象的属性中获取设备信息;
    上面的方法看着简单,不过还有一些内容需要注意:获取设备信息时需要使用异步操作,不然无法获取到设备信息。设备信息按照平台分类,因为Flutter支持跨平台的
    操作,所以设备信息可以分为Android,IOS和Web等不同平台。

2.2 详细信息

设备信息以类的成员属性存放在类的对象中,下面是Android设备的成员属性,请大家参考:

/// Android operating system version values derived from `android.os.Build.VERSION`.
  final AndroidBuildVersion version;

  /// The name of the underlying board, like "goldfish".
  /// https://developer.android.com/reference/android/os/Build#BOARD
  final String board;

  /// The system bootloader version number.
  /// https://developer.android.com/reference/android/os/Build#BOOTLOADER
  final String bootloader;

  /// The consumer-visible brand with which the product/hardware will be associated, if any.
  /// https://developer.android.com/reference/android/os/Build#BRAND
  final String brand;

  /// The name of the industrial design.
  /// https://developer.android.com/reference/android/os/Build#DEVICE
  final String device;

  /// A build ID string meant for displaying to the user.
  /// https://developer.android.com/reference/android/os/Build#DISPLAY
  final String display;

  /// A string that uniquely identifies this build.
  /// https://developer.android.com/reference/android/os/Build#FINGERPRINT
  final String fingerprint;

  /// The name of the hardware (from the kernel command line or /proc).
  /// https://developer.android.com/reference/android/os/Build#HARDWARE
  final String hardware;

  /// Hostname.
  /// https://developer.android.com/reference/android/os/Build#HOST
  final String host;

  /// Either a changelist number, or a label like "M4-rc20".
  /// https://developer.android.com/reference/android/os/Build#ID
  final String id;

  /// The manufacturer of the product/hardware.
  /// https://developer.android.com/reference/android/os/Build#MANUFACTURER
  final String manufacturer;

  /// `false` if the application is running in an emulator, `true` otherwise.
  final bool isPhysicalDevice;
  
  /// Information about the current android display.
  final AndroidDisplayMetrics displayMetrics;

  /// Hardware serial number of the device, if available
  ///
  /// There are special restrictions on this identifier, more info here:
  /// https://developer.android.com/reference/android/os/Build#getSerial()
  final String serialNumber;

上面的代码来自包中的源代码,代码中的注释就是成员属性的含义,从中可以看到,我们可以获取到Android设备的硬件版本号,Android系统版本号等信息。此外,这
里只列出了部分信息,大家可以从源代码中看到完成的设备信息。关于该包更多的用法可以参考API文档。

3. 示例代码

///获取手机上的软件和硬件信息
Future<String> getAndroidDeviceInfo() async {
String result = "";
DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
AndroidDeviceInfo androidDeviceInfo = await deviceInfoPlugin.androidInfo;
result = androidDeviceInfo.toString();

debugPrint("device info: $result");

///可以得到以下关键信息
/// widthPx: 1080.0, heightPx: 2460  sdkInt: 33

return result;
}

上面是我们获取Android设备信息的示例代码,通过该代码可以获取当前手机的屏幕分辨率和手机上Android系统的版本号。大家可以自动动手来获取IOS手机上的设备
信息,就当作是我留给大家的作业吧。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • Flutter没有提供获取设备信息的接口,可以通过三方包实现;
  • 获取的设备信息按照Andrid,IOS,Web等平台来分类。
  • 设备信息存放在类的成员属性中,可以通过类的对象获取到;
    看官们,与"如何获取设备信息"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

你可能感兴趣的:(一起Talk,Flutter吧,flutter位置信息,移动开发Flutter)