# 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`