【Flutter】OSや機種情報の取得方法とOSごとに処理を分岐させる方法

Flutter

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や機種情報を取得する方法 は終わりです。

参考

コメント

タイトルとURLをコピーしました