Orientação gerada a partir de informações públicas. Apenas para referência.
platform_detail é um pacote leve em Dart que simplifica a recuperação de informações abrangentes específicas da plataforma. Ele fornece uma interface unificada e fácil de usar para identificar o sistema operacional atual, tipo de dispositivo, arquitetura e outros detalhes de tempo de execução em múltiplas plataformas, incluindo Android, iOS, macOS, Windows e Linux. Projetado para desenvolvedores que precisam de detecção confiável da plataforma sem código boilerplate, ele abstrai verificações de plataforma de baixo nível em métodos limpos e legíveis. A biblioteca é ideal para lógica condicional baseada no ambiente ou nas características do dispositivo.
Casos de uso
Renderização condicional da interface com base na plataforma
interruptores de recursos específicos do dispositivo
Utilitários de depuração multiplataforma
introspecção de ambiente de tempo de execução
Otimizando o desempenho por dispositivo
Teste de comportamentos específicos da plataforma
Principais recursos
Suporta Android, iOS, macOS, Windows e Linux
API simples para detecção de plataforma e dispositivo
Retorna informações detalhadas sobre o sistema
Leve, sem dependências externas
Interface consistente entre plataformas
Integração fácil por meio do pub add
Indicado para
Aplicativos cross-platform do Flutter
Aplicativos que exigem lógica consciente de plataforma
Desenvolvedores em busca de configuração mínima
Ferramentas de depuração e diagnóstico
Aplicativos direcionados a múltiplas plataformas desktop e móveis
Considerações
Não suporta a plataforma web
Limitado às informações de plataforma de tempo de execução apenas
Nenhuma detecção em tempo real de mudança de plataforma
Depende de APIs nativas da plataforma
Pode exigir tratamento de permissões em algumas plataformas
Não destinado à digitalização complexa de dispositivos
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Platform Detail
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.
If you only rely on TargetPlatform, you’ll miss web support.
voidmain() {
// Native TargetPlatform doesn't detect web:if (defaultTargetPlatform == TargetPlatform.android) {
// OK for Android
} elseif (kIsWeb) {
// Web has to be checked manually
}
}
With PlatformDetail, the check is unified:
voidmain() {
if (PlatformDetail.isWeb) {
print('Web detected ✔️');
}
}
🔎 Group-based Detection
Check whether the current platform belongs to a broader category:
voidmain() {
if (PlatformDetail.isMobile) {
print('Mobile platform');
}
if (PlatformDetail.isDesktop) {
print('Desktop platform');
}
if (PlatformDetail.isDesktopOrWeb) {
print('Desktop or Web platform');
}
}
voidmain() {
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:
ℹ️ No configuration is required for most platforms.
For macOS, you must add the following entry to both DebugProfile.entitlements and ReleaseProfile.entitlements files:
If you need more detailed information about the device and operating system it is running on.
voidmain() async {
final descriptionDevice = awaitPlatformDetail.deviceInfo();
}
Or maybe you need an information string about the device info:
voidmain() async {
final descriptionDevice = awaitPlatformDetail.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():
voidmain() async {
final details = awaitPlatformDetail.environmentDetails();
print(details.platformType); // PlatformType.androidprint(details.platform); // android 14print(details.deviceModel); // Google Pixel 8print(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():
voidmain() async {
final details = awaitPlatformDetail.versionDetails();
print(details.appName); // My Appprint(details.packageName); // com.example.my_appprint(details.version); // 5.4.0print(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:
voidmain() {
if (PlatformDetail.isLightMode) {
print('The current platform is configured with light mode');
}
if (PlatformDetail.isDarkMode) {
print('The current platform is configured with dark mode');
}
}
voidmain() {
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');
}
}