개요
이번 블로그 포스트에서는 device_info_plus
를 사용하여 디바이스명, 디바이스 모델명, 디바이스 시스템명 등 디바이스에 관한 정보를 가져오는 방법에 대해서 알아봅시다.
- device_info_plus: https://pub.dev/packages/device_info_plus
이 블로그 포스트에서 소개하는 소스 코드는 아래에 링크에서 확인할 수 있습니다.
device_info_plus 설치
Flutter에서 device_info_plus의 사용법을 확인하기 위해 다음 명령어를 사용하여 Flutter의 새로운 프로젝트를 생성합니다.
flutter create device_info_plus_example
그런 다음 명령어를 실행하여 device_info_plus
패키지를 설치합니다.
flutter pub add device_info_plus
이제 이렇게 설치한 device_info_plus를 사용하는 방법에 대해서 알아보도록 합시다.
사용법
device_info_plus
를 사용하면 다음과 같은 정보를 사용할 수 있습니다.
import 'package:device_info_plus/device_info_plus.dart';
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
// Android
AndroidDeviceInfo info = await deviceInfo.androidInfo;
print(info.version);
print(info.board);
print(info.bootloader);
print(info.brand);
print(info.device);
...
// iOS
IosDeviceInfo info = await deviceInfo.iosInfo;
print(info.name);
print(info.systemName);
print(info.systemVersion);
print(info.model);
print(info.localizedModel);
...
// Linux
LinuxDeviceInfo info = await deviceInfo.linuxInfo;
print(info.name);
print(info.version);
print(info.id);
print(info.versionCodename);
print(info.versionId);
...
// macOS
MacOsDeviceInfo info = await deviceInfo.macOsInfo;
print(info.computerName);
print(info.hostName);
print(info.arch);
print(info.model);
print(info.kernelVersion);
...
// Windows
WindowsDeviceInfo info = await deviceInfo.windowsInfo;
print(info.computerName);
print(info.numberOfCores);
print(info.systemMemoryInMegabytes);
각각의 디바이스별로 습득할 수 있는 정보가 다르므로, 제공하는 정보를 확인하여 사용해야 합니다.
또는 다음처럼 공통화된 정보를 가져올 수 있습니다.
final info = await deviceInfo.deviceInfo;
print(info.toMap());
예제
지금까지에 내용을 확인하기 위해 lib/main.dart
파일을 열고 다음과 같이 수정합니다.
// ignore_for_file: avoid_print
import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
AndroidDeviceInfo info = await deviceInfo.androidInfo;
print(info.toMap());
} else if (Platform.isIOS) {
IosDeviceInfo info = await deviceInfo.iosInfo;
print(info.toMap());
} else if (Platform.isLinux) {
LinuxDeviceInfo info = await deviceInfo.linuxInfo;
print(info.toMap());
} else if (Platform.isMacOS) {
MacOsDeviceInfo info = await deviceInfo.macOsInfo;
print(info.toMap());
} else if (Platform.isWindows) {
WindowsDeviceInfo info = await deviceInfo.windowsInfo;
print(info.toMap());
}
final info = await deviceInfo.deviceInfo;
print(info.toMap());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Device Info Plus'),
),
body: const Center(
child: Text(
'Example App',
),
),
);
}
}
앱이 시작되면 main
함수가 실행되고, device_info_plus
로부터 정보를 가져오게 됩니다.
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
AndroidDeviceInfo info = await deviceInfo.androidInfo;
print(info.toMap());
} else if (Platform.isIOS) {
IosDeviceInfo info = await deviceInfo.iosInfo;
print(info.toMap());
} else if (Platform.isLinux) {
LinuxDeviceInfo info = await deviceInfo.linuxInfo;
print(info.toMap());
} else if (Platform.isMacOS) {
MacOsDeviceInfo info = await deviceInfo.macOsInfo;
print(info.toMap());
} else if (Platform.isWindows) {
WindowsDeviceInfo info = await deviceInfo.windowsInfo;
print(info.toMap());
}
final info = await deviceInfo.deviceInfo;
print(info.toMap());
runApp(const MyApp());
}
성공적으로 정보를 가져왔다면, 다음과 같이 디바이스의 정보가 출력합니다.
{name: iPhone 13 Pro Max, model: iPhone, systemName: iOS, utsname: {release: 21.3.0, version: Darwin Kernel Version 21.3.0: Wed Jan 5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_X86_64, machine: x86_64, sysname: Darwin, nodename: F200304NT01.local}, systemVersion: 15.2, localizedModel: iPhone, identifierForVendor: CED17DF0-20A2-4028-94C3-B4018E00DB92, isPhysicalDevice: false}
완료
이것으로 device_info_plus
를 사용하여 디바이스명, 디바이스 모델명, 디바이스 시스템명 등 디바이스의 정보를 가져오는 방법에 대해서 알아보았습니다. 이를 사용하면 어떤 디바이스에서 앱이 실행되고 있는지 디버깅할 수 있습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.