パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v5.5.0

platform_detail

現在のプラットフォームに関する情報を、より包括的かつ簡単な方法で取得するための軽量ライブラリです。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
408
いいね数
27
Pub ポイント
160

パッケージをインストール

flutter pub add platform_detail

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

platform_detail は、包括的なプラットフォーム固有の情報を取得するのを簡単にする軽量なDartパッケージです。Android、iOS、macOS、Windows、Linuxなど複数のプラットフォームで、現在のオペレーティングシステム、デバイスタイプ、アーキテクチャ、その他の実行時情報を識別するための統合的で使いやすいインターフェースを提供します。ボイラープレートコードなしで信頼性の高いプラットフォーム検出が必要な開発者向けに設計されており、低レベルのプラットフォームチェックを明確で読みやすいメソッドに抽象化しています。環境やデバイスの特性に基づく条件付きロジックに最適です。

用途

  • プラットフォームに基づく条件付きUIレンダリング
  • デバイス固有の機能トグル
  • クロスプラットフォームデバッグユーティリティ
  • ランタイム環境の内省
  • デバイスごとのパフォーマンス最適化
  • プラットフォーム固有の動作のテスト

主な機能

  • Android、iOS、macOS、Windows、Linux をサポートしています
  • プラットフォームおよびデバイス検出用のシンプルな API
  • 詳細なシステム情報を返します
  • 軽量で外部依存関係なし
  • プラットフォーム間での一貫したインターフェース
  • pub add を通じた簡単な統合

適している対象

  • クロスプラットフォームのFlutterアプリ
  • プラットフォームに応じた論理を必要とするアプリ
  • 最小限のセットアップを求める開発者
  • デバッグおよび診断ツール
  • 複数のデスクトップおよびモバイルプラットフォームをターゲットにするアプリ

注意事項

  • Webプラットフォームをサポートしていません
  • 実行時プラットフォーム情報のみに制限
  • リアルタイムでのプラットフォーム変更の検出なし
  • ネイティブプラットフォームAPIに依存しています
  • 一部のプラットフォームでは、権限の処理が必要になる場合があります
  • 複雑なデバイスのフィンガープリントには適していません

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Platform Detail Logo

Platform Detail

Pub Version CI Status CD Status Code Coverage

About

Platform Detail is a lightweight and developer-friendly Flutter package that makes platform detection easier, more complete, and cross-platform.
It provides a unified and consistent API for checking the platform your app is running on — including web, something that native Flutter classes like TargetPlatform and Platform from dart:io don't currently support.

⚠️ Flutter’s native Platform and TargetPlatform do not provide support for detecting web, which can be a limitation in universal apps.
✅ platform_detail addresses this limitation by introducing a simple and intuitive API that includes web detection out of the box.

✅ Why Use This Package?

  • ✅ Unified API across all platforms (including web).
  • ✅ Clear separation between platform type and platform group.
  • ✅ Static API with simple access from PlatformDetail.
  • ✅ No need to manually check kIsWeb or rely on partial solutions.
  • ✅ Typed runtime environment details (platform, deviceModel, locale, platformType).
  • ✅ Detect private and public IP addresses.
  • ✅ Detect device theme (light or dark).

Getting Started

The recommended way to use the library is to call the static members of the PlatformDetail class.

Run the Example

The example app now shows device info, network info and EnvironmentDetails on screen.

If you use VS Code, you can launch it with the Flutter Example debug configuration (cwd: example, program: lib/main.dart).


🔍 Basic Usage

✔️ Detecting Platform Type
import 'package:platform_detail/platform_detail.dart';

void main() {
  PlatformType platform = PlatformDetail.currentPlatform;
  print('This platform is: $platform'); // e.g., PlatformType.android
}

🌐 Why use PlatformType?

If you only rely on TargetPlatform, you’ll miss web support.

void main() {
  // Native TargetPlatform doesn't detect web:
  if (defaultTargetPlatform == TargetPlatform.android) {
    // OK for Android
  } else if (kIsWeb) {
    // Web has to be checked manually
  }
}

With PlatformDetail, the check is unified:

void main() {
  if (PlatformDetail.isWeb) {
    print('Web detected ✔️');
  }
}

🔎 Group-based Detection

Check whether the current platform belongs to a broader category:

void main() {
  if (PlatformDetail.isMobile) {
    print('Mobile platform');
  }

  if (PlatformDetail.isDesktop) {
    print('Desktop platform');
  }

  if (PlatformDetail.isDesktopOrWeb) {
    print('Desktop or Web platform');
  }
}

Or use the PlatformGroup enum directly:

void main() {
  switch (PlatformDetail.currentGroupPlatform) {
    case PlatformGroup.mobile:
      print('Mobile');
      break;
    case PlatformGroup.web:
      print('Web');
      break;
    case PlatformGroup.desktop:
      print('Desktop');
      break;
  }
}

🎯 Detecting Specific Platforms
void main() {
  if (PlatformDetail.isIOS) print('iOS');
  if (PlatformDetail.isAndroid) print('Android');
  if (PlatformDetail.isFuchsia) print('Fuchsia');
  if (PlatformDetail.isWindows) print('Windows');
  if (PlatformDetail.isLinux) print('Linux');
  if (PlatformDetail.isMacOS) print('macOS');
  if (PlatformDetail.isWeb) print('Web');
}

Or create different cases through the enum with a switch:

void main() {
  switch (PlatformDetail.currentPlatform) {
    case PlatformType.android:
      print('Android');
    case PlatformType.iOS:
      print('iOS');
    case PlatformType.isFuchsia:
      print('Fuchsia');
    case PlatformType.Windows:
      print('Windows');
    case PlatformType.Linux:
      print('Linux');
    case PlatformType.macOS:
      print('macOS');
    case PlatformType.Web:
      print('Web');
  }
}

🌐 Detecting IPs

You can detect the private IP of the device:

void main() async {
  final List<String> privateIps = await PlatformDetail.getPrivateIp;
}

You can also detect the public IP of the device:

void main() async {
  final String publicIp = await PlatformDetail.getPublicIp;
}

ℹ️ No configuration is required for most platforms.
For macOS, you must add the following entry to both DebugProfile.entitlements and ReleaseProfile.entitlements files:

<key>com.apple.security.network.client</key>
<true/>

Get a device description

If you need more detailed information about the device and operating system it is running on.

void main() async {
  final descriptionDevice = await PlatformDetail.deviceInfo();
}

Or maybe you need an information string about the device info:

void main() async {
  final descriptionDevice = await PlatformDetail.deviceInfoDetails();
}

This will return something like this:

  • Android: Android 9 (SDK 28), Xiaomi Redmi Note 7
  • iOS: iOS 13.1, iPhone 11 Pro Max iPhone
  • Web: Google Chrome (115.0.5790.170)
  • Linux: Fedora 17 (Beefy Miracle)
  • Windows: Windows 10 Home (1903)
  • MacOS: macOS 13.5, MacBook Pro

Get compact environment details

If you need a typed and lightweight payload with platform, model and locale, use environmentDetails():

void main() async {
  final details = await PlatformDetail.environmentDetails();

  print(details.platformType); // PlatformType.android
  print(details.platform); // android 14
  print(details.deviceModel); // Google Pixel 8
  print(details.locale); // en-US
}

This returns an EnvironmentDetails object with these fields:

  • platformType: PlatformType
  • platform: String
  • deviceModel: String
  • locale: String

The example app includes a section that renders these values on screen.

Get app version and build number

If you need app package metadata, you can use versionDetails():

void main() async {
  final details = await PlatformDetail.versionDetails();

  print(details.appName); // My App
  print(details.packageName); // com.example.my_app
  print(details.version); // 5.4.0
  print(details.buildNumber); // 12
}

This returns a VersionDetails object with these fields:

  • appName: String
  • packageName: String
  • version: String
  • buildNumber: String

Light/Dark Mode

You can detect too if the device is configured in light or dark mode:

void main() {
  if (PlatformDetail.isLightMode) {
    print('The current platform is configured with light mode');
  }

  if (PlatformDetail.isDarkMode) {
    print('The current platform is configured with dark mode');
  }
}

Also, you can use the DeviceTheme enum for this:

void main() {
  if (PlatformDetail.theme == DeviceTheme.light) {
    print('The current device is configured in light mode');
  }

  if (PlatformDetail.theme == DeviceTheme.dark) {
    print('The current device is configured in dark mode');
  }
}

カテゴリー

依存関係

依存関係一覧 3 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。