概要
このブログポストには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で開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。