Platform în Dart

Clasa Platform dă informații despre sistemul pe care rulează programul: sistemul de operare, variabilele de mediu, procesorul.

Sintaxă
import 'dart:io';

static String get operatingSystem   // "linux", "macos", "windows", "android", "ios", "fuchsia"
static bool get isLinux
static bool get isMacOS
static bool get isWindows

Ce face Platform

Platform din dart:io are doar membri statici: nu creezi obiecte, scrii direct Platform.operatingSystem. Valorile descriu calculatorul pe care rulează programul, deci diferă de la un utilizator la altul.

Platform.operatingSystem returnează numele sistemului cu litere mici: "linux", "macos", "windows", "android", "ios" sau "fuchsia". Getter-ele isLinux, isMacOS, isWindows (și isAndroid, isIOS, isFuchsia) sunt mai comode în if; exact unul dintre ele este true.

Alți membri: environment, numberOfProcessors, pathSeparator, script, version, localHostname, operatingSystemVersion, localeName. Platform nu există pe web; acolo folosește kIsWeb din Flutter.

Exemple

Exemplul 1: Exact un sistem de operare

import 'dart:io';

void main() {
  final sisteme = {
    'linux': Platform.isLinux,
    'macos': Platform.isMacOS,
    'windows': Platform.isWindows,
    'android': Platform.isAndroid,
    'ios': Platform.isIOS,
    'fuchsia': Platform.isFuchsia,
  };
  final adevarate = sisteme.entries.where((e) => e.value).map((e) => e.key);
  print('Câte sunt true: ${adevarate.length}');
  print('Se potrivește cu operatingSystem: ${adevarate.single == Platform.operatingSystem}');
}

Rezultat

Câte sunt true: 1
Se potrivește cu operatingSystem: true

Exemplul 2: Comportament diferit pe fiecare sistem

import 'dart:io';

String comandaListare() {
  if (Platform.isWindows) return 'dir';
  if (Platform.isMacOS || Platform.isLinux) return 'ls -l';
  return 'necunoscută';
}

void main() {
  print('Sistem: ${Platform.operatingSystem}');
  print('Comanda de listare: ${comandaListare()}');
}

Rezultat pe macOS

Sistem: macos
Comanda de listare: ls -l

Exemplul 3: Mai multe detalii despre calculator

import 'dart:io';

void main() {
  print(Platform.operatingSystem);
  print(Platform.operatingSystemVersion);
  print(Platform.localeName);
}

Rezultat posibil pe Linux

linux
Linux 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC
ro_RO.UTF-8

Greșeli frecvente

  • Compari cu 'macOS' sau 'Windows': operatingSystem folosește doar litere mici ('macos', 'windows'). Mai sigur, folosește Platform.isMacOS.
  • Importi dart:io într-o aplicație Flutter web ca să verifici platforma: pe web Platform nu există și aplicația nu pornește.

Comenzi înrudite

  • Platform.environment: Platform.environment este un Map, doar pentru citire, cu variabilele de mediu ale procesului (PATH, HOME, chei de configurare).
  • Platform.pathSeparator: Separatorul folosit în căile de fișiere: „/” pe macOS și Linux, „\” pe Windows.
  • Platform.version: Textul cu versiunea Dart care rulează programul, de forma „3.13.5 (stable) (data) on „macos_arm64″”.
  • Platform.numberOfProcessors: Returnează numărul de procesoare (nuclee) logice ale calculatorului, util pentru a împărți munca pe mai multe isolate.