# Flutter 好用package - device_info_plus 介紹 ## device_info_plus 取得手機資訊 ``` flutter pub add device_info_plus ``` [官網](https://pub.dev/packages/device_info_plus) ### 程式範例 ```dart import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class DevicesInfo { DevicesInfo._(); static DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); static Future<Map<String, dynamic>> getDevicesInfo() async { Map<String, dynamic> deviceData = <String, dynamic>{}; try { if (Platform.isAndroid) { deviceData = _readAndroidBuildData(await deviceInfo.androidInfo); debugPrint('device ${deviceData['platform']}'); //系統名稱 debugPrint('device ${deviceData['brand']}'); //品牌 debugPrint('device ${deviceData['model']}'); //型號 debugPrint('device ${deviceData['version.release']}'); //版本 debugPrint('device ${deviceData['isPhysicalDevice']}'); //是否為物理設備 } else if (Platform.isIOS) { deviceData = _readIosDeviceInfo(await deviceInfo.iosInfo); debugPrint('device ${deviceData['systemName']}'); //系統名稱 debugPrint('device ${deviceData['model']}'); //品牌 //IOS型號轉換 //https://github.com/Boehrsi/device_identifiers/blob/main/output/device_identifiers.dart debugPrint('device ${deviceData['utsname.machine']}'); //型號 debugPrint('device ${deviceData['systemVersion']}'); //版本 debugPrint('device ${deviceData['isPhysicalDevice']}'); //是否為物理設備 } } on PlatformException { deviceData = <String, dynamic>{ 'Error:': 'Failed to get platform version.' }; } return deviceData; } static Map<String, dynamic> _readAndroidBuildData(AndroidDeviceInfo build) { return <String, dynamic>{ 'platform': 'Android', 'version.securityPatch': build.version.securityPatch, 'version.sdkInt': build.version.sdkInt, 'version.release': build.version.release, 'version.previewSdkInt': build.version.previewSdkInt, 'version.incremental': build.version.incremental, 'version.codename': build.version.codename, 'version.baseOS': build.version.baseOS, 'board': build.board, 'bootloader': build.bootloader, 'brand': build.brand, 'device': build.device, 'display': build.display, 'fingerprint': build.fingerprint, 'hardware': build.hardware, 'host': build.host, 'id': build.id, 'manufacturer': build.manufacturer, 'model': build.model, 'product': build.product, 'supported32BitAbis': build.supported32BitAbis, 'supported64BitAbis': build.supported64BitAbis, 'supportedAbis': build.supportedAbis, 'tags': build.tags, 'type': build.type, 'isPhysicalDevice': build.isPhysicalDevice, 'systemFeatures': build.systemFeatures, 'displaySizeInches': ((build.displayMetrics.sizeInches * 10).roundToDouble() / 10), 'displayWidthPixels': build.displayMetrics.widthPx, 'displayWidthInches': build.displayMetrics.widthInches, 'displayHeightPixels': build.displayMetrics.heightPx, 'displayHeightInches': build.displayMetrics.heightInches, 'displayXDpi': build.displayMetrics.xDpi, 'displayYDpi': build.displayMetrics.yDpi, }; } static Map<String, dynamic> _readIosDeviceInfo(IosDeviceInfo data) { return <String, dynamic>{ 'name': data.name, 'systemName': data.systemName, 'systemVersion': data.systemVersion, 'model': data.model, 'localizedModel': data.localizedModel, 'identifierForVendor': data.identifierForVendor, 'isPhysicalDevice': data.isPhysicalDevice, 'utsname.sysname': data.utsname.sysname, 'utsname.nodename': data.utsname.nodename, 'utsname.release': data.utsname.release, 'utsname.version': data.utsname.version, 'utsname.machine': data.utsname.machine, }; } } ``` ###### tags: `flutter`