Dart Platform
last modified April 4, 2025
The Platform
class in Dart provides information about the current
platform and environment. It's useful for writing cross-platform applications.
Platform can detect operating system, executable path, environment variables,
and more. It's part of Dart's dart:io
library for server-side apps.
Basic Definition
Platform
is a static class that exposes platform-specific properties.
It helps write code that adapts to different operating systems and environments.
Key features include OS detection, path resolution, and environment variable access. Note it only works in Dart command-line applications, not in browsers.
Detecting the Operating System
This example shows how to detect the current operating system.
import 'dart:io'; void main() { print('Operating system: ${Platform.operatingSystem}'); print('OS version: ${Platform.operatingSystemVersion}'); if (Platform.isWindows) { print('Running on Windows'); } else if (Platform.isLinux) { print('Running on Linux'); } else if (Platform.isMacOS) { print('Running on macOS'); } }
We use Platform properties to detect the OS. The isWindows, isLinux, and isMacOS getters provide convenient boolean checks for common platforms.
$ dart main.dart Operating system: linux OS version: 5.15.0-76-generic Running on Linux
Accessing Environment Variables
This example demonstrates accessing system environment variables.
import 'dart:io'; void main() { final envVars = Platform.environment; print('PATH: ${envVars['PATH']}'); print('HOME: ${envVars['HOME']}'); print('USER: ${envVars['USER']}'); if (envVars.containsKey('FLUTTER_ROOT')) { print('Flutter SDK: ${envVars['FLUTTER_ROOT']}'); } }
Platform.environment provides a map of all environment variables. We can access specific variables or check for their existence before accessing them.
$ dart main.dart PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin HOME: /home/user USER: user
Getting Executable Information
This example shows how to get information about the running executable.
import 'dart:io'; void main() { print('Executable: ${Platform.executable}'); print('Executable arguments: ${Platform.executableArguments}'); print('Script path: ${Platform.script.path}'); print('Resolved script path: ${Platform.resolvedExecutable}'); print('Dart version: ${Platform.version}'); }
These properties help identify the Dart runtime and script location. Useful for logging, debugging, or when paths need to be resolved relative to the executable.
$ dart main.dart Executable: /usr/bin/dart Executable arguments: [] Script path: /home/user/main.dart Resolved script path: /usr/bin/dart Dart version: 2.19.0 (stable)
Checking Platform Locale
This example demonstrates checking the platform's locale settings.
import 'dart:io'; void main() { final locale = Platform.localeName; print('System locale: $locale'); final locales = Platform.localeName.split('_'); final language = locales[0]; final country = locales.length > 1 ? locales[1] : 'Unknown'; print('Language: $language'); print('Country: $country'); }
Platform.localeName returns the system locale in language_COUNTRY format. We split it to get separate language and country components for localization.
$ dart main.dart System locale: en_US Language: en Country: US
Platform-Specific Code Execution
This example shows how to execute platform-specific code paths.
import 'dart:io'; String getPlatformSpecificMessage() { if (Platform.isWindows) { return 'Hello Windows user!'; } else if (Platform.isMacOS) { return 'Hello macOS user!'; } else if (Platform.isLinux) { return 'Hello Linux user!'; } else if (Platform.isAndroid) { return 'Hello Android user!'; } else if (Platform.isIOS) { return 'Hello iOS user!'; } return 'Hello unknown platform user!'; } void main() { print(getPlatformSpecificMessage()); print('Number of processors: ${Platform.numberOfProcessors}'); }
We use Platform checks to customize behavior per platform. Also shown is numberOfProcessors which helps with parallel task distribution.
$ dart main.dart Hello Linux user! Number of processors: 8
Best Practices
- Feature detection: Prefer feature detection over OS checks when possible
- Null safety: Check environment variables exist before accessing
- Web compatibility: Remember Platform doesn't work in browsers
- Testing: Test platform-specific code paths thoroughly
Source
This tutorial covered Dart's Platform class with practical examples showing platform detection, environment access, and platform-specific code execution.
Author
List all Dart tutorials.