小工具知识网

当前位置: 首页 > 行业知识 > Flutter笔记:获取设备信息

行业知识

Flutter笔记:获取设备信息

2026-11-10 17:20:43 来源:互联网转载
Flutter笔记 获取设备信息

作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263

邮箱 :291148484@163.com

本文地址:https://blog.csdn.net/qq_28550263/article/details/134669785


目 录

  • 1. 概述
  • 2. 安装和导入
  • 3. 使用方法
    • 3.1 获取设备信息
    • 3.2 获取设备信息的通用方法
    • 4. 设备信息类详解
      • 4.1 AndroidDeviceInfo类
      • 4.2 IosDeviceInfo类
      • 4.3 WebBrowserInfo类
      • 5. 使用示例与应用场景

        1. 概述

        device_info_plus是一个Flutter插件,用于获取当前设备的信息。它支持Android、iOS、MacOS、Web、Linux和Windows平台。

        2. 安装和导入

        首先,你需要在你的pubspec.yaml文件中添加device_info_plus作为依赖。然后,你可以在你的代码中导入device_info_plus/device_info_plus.dart。

        import 'package:device_info_plus/device_info_plus.dart';

        接着运行 flutter pub get 完成安装。

        3. 使用方法

        如果你想在Android上获取设备的序列号,你的应用需要满足官方的一些要求。如果应用不满足这些要求,插件将返回unknown。

        3.1 获取设备信息

        你可以实例化DeviceInfoPlugin,然后使用Android、iOS和Web的getter来获取特定平台的设备信息。

        DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;print('Running on ${androidInfo.model}');  // e.g. "Moto G (4)"IosDeviceInfo iosInfo = await deviceInfo.iosInfo;print('Running on ${iosInfo.utsname.machine}');  // e.g. "iPod7,1"WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;print('Running on ${webBrowserInfo.userAgent}');  // e.g. "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"

        3.2 获取设备信息的通用方法

        插件提供了一个返回平台特定设备信息的通用方法,这可以用于崩溃报告等目的。但是,这个方法返回的数据目前不可序列化(即,它不是100%的JSON兼容),因此不应该被当作JSON来处理。

        final deviceInfoPlugin = DeviceInfoPlugin();final deviceInfo = await deviceInfoPlugin.deviceInfo;final allInfo = deviceInfo.data;

        4. 设备信息类详解

        device_info_plus库提供了多个类,每个类都有一些特定的属性。以下是一些主要的类和它们的属性:

        4.1 AndroidDeviceInfo类

        这个类提供了从android.os.Build派生的信息。以下是一些主要的属性:

        属性类型描述
        boardString底层板的名称,如 “goldfish”
        bootloaderString系统引导程序的版本号
        brandString与产品/硬件相关的消费者可见品牌(如果有)
        deviceString工业设计的名称
        displayString用于向用户显示的构建ID字符串
        fingerprintString唯一标识此构建的字符串
        hardwareString硬件的名称(来自内核命令行或/proc)
        hostString主机名
        idString更改列表号,或者像"M4-rc20"这样的标签
        isPhysicalDevicebool如果应用在模拟器上运行,返回false,否则返回true
        manufacturerString产品/硬件的制造商
        modelString最终产品的最终用户可见名称
        productString整体产品的名称
        serialNumberString设备的硬件序列号(如果可用)
        supported32BitAbisList此设备支持的32位ABI的有序列表
        supported64BitAbisList此设备支持的64位ABI的有序列表
        supportedAbisList此设备支持的ABI的有序列表
        systemFeaturesList描述当前设备可用的功能
        tagsString描述构建的逗号分隔的标签,如 “unsigned,debug”
        typeString构建的类型,如 “user” 或 “eng”
        versionAndroidBuildVersion来自android.os.Build.VERSION的Android操作系统版本值

        例如:

        AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;print('Running on ${androidInfo.model}');  // 输出 "Running on sdk_gphone_x86_arm"print('Brand: ${androidInfo.brand}');  // 输出 "Brand: google"print('Is physical device: ${androidInfo.isPhysicalDevice}');  // 输出 "Is physical device: false"

        4.2 IosDeviceInfo类

        这个类提供了从UIDevice派生的信息。以下是一些主要的属性:

        属性类型描述示例
        nameString设备的名称“John’s iPhone”
        systemNameString操作系统的名称“iOS”
        systemVersionString操作系统的版本“13.3.1”
        modelString设备的型号“iPhone”
        utsname.machineString设备的机器名“iPod7,1”
        isPhysicalDevicebool如果应用在模拟器上运行,返回false,否则返回truetrue
        identifierForVendorString唯一标识设备的字符串“E621E1F8-C36C-495A-93FC-0C247A3E6E5F”

        这些属性都是只读的,不能被修改。要获取这些属性,你需要先实例化DeviceInfoPlugin,然后调用iosInfo方法。例如:

        IosDeviceInfo iosInfo = await deviceInfo.iosInfo;print('Device name: ${iosInfo.name}');  // e.g. "John's iPhone"print('System name: ${iosInfo.systemName}');  // e.g. "iOS"print('System version: ${iosInfo.systemVersion}');  // e.g. "13.3.1"print('Model: ${iosInfo.model}');  // e.g. "iPhone"print('Machine: ${iosInfo.utsname.machine}');  // e.g. "iPod7,1"print('Is physical device: ${iosInfo.isPhysicalDevice}');  // e.g. trueprint('Identifier for vendor: ${iosInfo.identifierForVendor}');  // e.g. "E621E1F8-C36C-495A-93FC-0C247A3E6E5F"

        4.3 WebBrowserInfo类

        这个类提供了从navigator派生的信息。以下是一些主要的属性:

        属性类型描述
        browserNameBrowserName浏览器的名称,例如BrowserName.Chrome
        appCodeNameString浏览器的代码名称,例如"Mozilla"
        appNameString浏览器的名称,例如"Netscape"
        appVersionString浏览器的版本,例如"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537"
        platformString浏览器平台,例如"Win32"
        userAgentString浏览器的用户代理字符串,例如"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"

        以下是如何在代码中使用这些属性的示例:

        WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;print('Browser Name: ${webBrowserInfo.browserName}');print('App Code Name: ${webBrowserInfo.appCodeName}');print('App Name: ${webBrowserInfo.appName}');print('App Version: ${webBrowserInfo.appVersion}');print('Platform: ${webBrowserInfo.platform}');print('User Agent: ${webBrowserInfo.userAgent}');

        这段代码将打印出当前浏览器的名称、代码名称、名称、版本、平台和用户代理字符串。

        5. 使用示例与应用场景

        在使用device_info_plus时,你可能需要根据你的具体需求来选择使用哪些属性和方法。以下是一些常见的示例:

        • 获取Android设备的型号:
          AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;print('Running on ${androidInfo.model}');
          • 获取iOS设备的机器名:
            IosDeviceInfo iosInfo = await deviceInfo.iosInfo;print('Running on ${iosInfo.utsname.machine}');
            • 获取Web浏览器的用户代理信息:
              WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;print('Running on ${webBrowserInfo.userAgent}');

上一篇:金蝶kis服务器怎么填?

下一篇:08.回调地狱函数及其解决(Promise链式调用)