Flutter设备信息获取插件device_info_x的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter设备信息获取插件device_info_x的使用

平台支持

Android iOS MacOS Web Linux Windows
✔️

特性

  • [✅] - 稳定
  • [❗] - 不完全稳定(某些信息无法获取,请谨慎使用)
  • [❌] - 实验性(不能保证,尚未添加到插件中)

支持获取的信息

  • [❗] Android

  • [✅] 系统

  • [❗] 电池

  • [✅] 摄像头

  • [❗] CPU

  • [✅] 显示屏

  • [✅] DRM

  • [✅] 内存

  • [❗] 网络

  • [❌] SIM卡

  • [❌] 系统文件

  • [❌] 热管理信息

示例应用截图

Android 信息 电池 摄像头 CPU
显示屏 DRM 内存 网络 系统

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  device_info:
    git:
      url: https://github.com/Lucidplus-IT-Solution/device_info_plugin.git
      ref: main

使用

1. 添加必要的权限到 AndroidManifest.xml

<!-- 如果需要访问摄像头和存储信息 -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>

<!-- 如果需要访问手机信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>

<!-- 如果需要访问网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

2. 导入库

import 'package:device_info_x/device_info_x.dart';

3. 获取 DeviceInfoX 实例

DeviceInfoX deviceInfoX = DeviceInfoX();

4. 获取设备信息

final result = await deviceInfoX.getAndroidDeviceInfo();
if (result != null) {
  final map = result.toMap(); // 转换为 Map
}

可用方法

getAndroidDeviceInfo() - 获取所有信息
(System, CPU, ANDROID, DRM, MEMORY, CAMERA, BATTERY, DISPLAY, THERMAL, NETWORK, SIMINFO, SYSTEMFILES)

将来会添加的功能

  • ✅ 已添加基本设备信息,目前仅支持 Android
  • ❌ 将添加对 iOS 的支持
  • ❌ 移除已弃用的库

示例代码

import 'package:device_info_example/app/modules/welcome/welcome.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
        iconTheme: const IconThemeData(
          color: Colors.blueAccent,
        ),
        useMaterial3: true,
      ),
      useInheritedMediaQuery: true,
      home: const Welcome(),
    );
  }
}

更多关于Flutter设备信息获取插件device_info_x的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设备信息获取插件device_info_x的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter设备信息获取插件 device_info_x 的代码示例。这个插件可以帮助你获取设备的详细信息,包括设备名称、操作系统版本、品牌、型号等。

首先,确保你已经在 pubspec.yaml 文件中添加了 device_info_x 依赖:

dependencies:
  flutter:
    sdk: flutter
  device_info_x: ^2.0.0  # 请根据需要替换为最新版本号

然后,运行 flutter pub get 来安装依赖。

接下来,你可以在你的 Flutter 应用中使用这个插件来获取设备信息。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:device_info_x/device_info_x.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Device Info Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: DeviceInfoScreen(),
    );
  }
}

class DeviceInfoScreen extends StatefulWidget {
  @override
  _DeviceInfoScreenState createState() => _DeviceInfoScreenState();
}

class _DeviceInfoScreenState extends State<DeviceInfoScreen> {
  Map<String, dynamic> _deviceData = {};

  @override
  void initState() {
    super.initState();
    _getDeviceInfo();
  }

  Future<void> _getDeviceInfo() async {
    DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();

    // 获取 Android 设备信息
    if (Platform.isAndroid) {
      AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
      setState(() {
        _deviceData = <String, dynamic>{
          'Brand': androidInfo.brand,
          'Model': androidInfo.model,
          'Android Version': androidInfo.version.release,
          'SDK Version': androidInfo.version.sdkInt,
          'Board': androidInfo.board,
          'Fingerprint': androidInfo.fingerprint,
          'Hardware': androidInfo.hardware,
          'Manufacturer': androidInfo.manufacturer,
          'Product': androidInfo.product,
        };
      });
    }
    // 获取 iOS 设备信息
    else if (Platform.isIOS) {
      IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo;
      setState(() {
        _deviceData = <String, dynamic>{
          'Name': iosInfo.name,
          'System Name': iosInfo.systemName,
          'System Version': iosInfo.systemVersion,
          'Model': iosInfo.model,
          'Localized Model': iosInfo.localizedModel,
          'Identifier For Vendor': iosInfo.identifierForVendor,
          'Is Physical Device': iosInfo.isPhysicalDevice,
        };
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Device Info'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: _deviceData.isEmpty
            ? Center(child: CircularProgressIndicator())
            : ListView(
                children: <Widget>[
                  for (var entry in _deviceData.entries)
                    ListTile(
                      title: Text('${entry.key}: ${entry.value}'),
                    ),
                ],
              ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,它会在初始化时调用 _getDeviceInfo 方法来获取设备信息,并将信息显示在屏幕上。

  • 对于 Android 设备,我们获取了品牌、型号、Android 版本等信息。
  • 对于 iOS 设备,我们获取了设备名称、系统版本、型号等信息。

这些信息是通过 DeviceInfoPlugin 插件获取的,并根据平台类型(Android 或 iOS)进行不同的处理。最后,我们将获取到的设备信息显示在 ListView 中。

希望这个示例能帮助你理解如何使用 device_info_x 插件来获取设备信息。

回到顶部