iOS や Android といった端末の OS の情報や、機種情報を取得する方法を紹介します。また、取得した OS の情報から Android と iOS で分岐させる方法についても紹介しています。
OS情報の取得
OS名の取得
dart:io.Platform でOS情報を取得できます。
以下のように、dart:io をインポートして、Platform.operatingSystem でOS名を取得できます。
import 'dart:io';
String os = Platform.operatingSystem;
OSの判別
OSの挙動に関わる処理を扱わない場合
OSバージョンの取得など、OSの挙動に関わる処理を扱わない場合は、dart:io.Platform でOSの判別もできます。
以下のように、Platform.is○○ を使用してOSごとに処理を分岐させます。
import 'dart:io' show Platform;
bool isAndroid = Platform.isAndroid;
bool isIOS = Platform.isIOS;
if (isAndroid) {
// Androidである場合の処理
}
if (isIOS) {
// iOSである場合の処理
}
上記以外にも、Platform.isWindows や Platform.isMacOS などを使用することで、モバイルOS以外の判別をすることができます。
OSの挙動に関わる処理を扱う場合
Widget の出し分けのようなOSの挙動に関わる処理を扱う場合は、以下のように Theme.of(context).platform を使用して分岐させます。
if (Theme.of(context).platform == TargetPlatform.android) {
// Androidである場合の処理
}
if (Theme.of(context).platform == TargetPlatform.iOS) {
// iOSである場合の処理
}
themeで platform: TargetPlatform.iOS を指定することで、デバッグ時に Android端末(エミュレータ)で iOSでの Widgetを確認することができます。
OSバージョンの取得
device_info_plusパッケージで、OSバージョンを取得することができます。
device_info_plusパッケージをインストール、インポートしましょう。
パッケージのインストールは、以下の記事で詳しく紹介しています。
以下ソースコードのように、OSバージョンを取得できます。
import 'package:device_info_plus/device_info_plus.dart';
// Android
final androidInfo = await deviceInfo.androidInfo;
final androidOsVersion = androidInfo.version.release!;
// iOS
final iosInfo = await deviceInfo.iosInfo;
final iosOsVersion = iosInfo.systemVersion!;
機種情報の取得
device_info_plusパッケージで、機種情報も取得することができます。
iOS の機種名取得は、apple_product_nameパッケージを使用します。
import 'package:device_info_plus/device_info_plus.dart';
import 'package:apple_product_name/apple_product_name.dart';
// Android
final androidInfo = await deviceInfo.androidInfo;
final androidOsVersion = androidInfo.model!;
// iOS
final iosInfo = await deviceInfo.iosInfo;
final iosOsVersion = iosInfo.utsname.productName!;
OSと機種情報の取得例
import 'dart:io' show Platform;
import 'package:device_info_plus/device_info_plus.dart';
import 'package:apple_product_name/apple_product_name.dart';
Future<void> main() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
final androidInfo = await deviceInfo.androidInfo;
print('OS: Andriod ${androidInfo.version.release}');
print('端末: ${androidInfo.model}');
}
if (Platform.isIOS) {
final iosInfo = await deviceInfo.iosInfo;
print('OS: iOS ${iosInfo.systemVersion}');
print('端末: ${iosInfo.utsname.productName}');
}
}
まとめ
Flutter で、OSや機種情報を取得する方法を紹介しました。
- OS名、OS判別 → dart.io:Platform を使用
(Widgetとの出し分けのようなOSの挙動に関わる処理をOSで分岐させる場合は、
Theme.of(context).platform を使用) - OSバージョン、機種情報 → device_info_plus を使用
(iOS の機種は、apple_product_name も使用)
以上で、【Flutter】OSや機種情報を取得する方法 は終わりです。
コメント