Platform.environment în Dart

Platform.environment este un Map, doar pentru citire, cu variabilele de mediu ale procesului (PATH, HOME, chei de configurare).

Sintaxă
static Map<String, String> get environment

Ce face Platform.environment

Variabilele de mediu sunt perechi nume–valoare pe care sistemul le dă fiecărui program: PATH, HOME (sau USERPROFILE pe Windows), LANG și altele setate de tine (PORT=8080 dart run main.dart). Platform.environment le returnează ca Map<String, String>.

Map-ul nu poate fi modificat: o atribuire aruncă UnsupportedError. Pentru a da alte variabile unui program pornit de tine, folosește parametrul environment al lui Process.run.

O variabilă care lipsește dă null la environment['NUME'], deci pui de obicei o valoare implicită cu ??. Pe Windows numele variabilelor nu țin cont de litere mari și mici.

Ce returnează

Un Map<String, String> nemodificabil cu variabilele de mediu.

Exemple

Exemplul 1: Configurare din variabile de mediu, cu valori implicite

import 'dart:io';

void main() {
  final env = Platform.environment;
  final port = int.parse(env['PORT_APLICATIE'] ?? '8080');
  final oras = env['ORAS_IMPLICIT'] ?? 'București';
  print('Port: $port');
  print('Oraș: $oras');
  print('Există PATH: ${env.containsKey('PATH')}');
}

Rezultat

Port: 8080
Oraș: București
Există PATH: true

Exemplul 2: Map-ul nu se poate modifica

import 'dart:io';

void main() {
  try {
    Platform.environment['NUME'] = 'Ana';
  } on UnsupportedError catch (eroare) {
    print('Eroare: ${eroare.message}');
  }
}

Rezultat

Eroare: Cannot modify unmodifiable map

Exemplul 3: Variabile trimise unui program pornit din Dart

Programul copil (sh) primește variabila NUME pe lângă cele moștenite.

import 'dart:io';

Future<void> main() async {
  final rezultat = await Process.run(
    'sh',
    ['-c', r'echo "Salut, $NUME din $ORAS!"'],
    environment: {'NUME': 'Ana', 'ORAS': 'Sibiu'},
  );
  stdout.write(rezultat.stdout);
}

Rezultat

Salut, Ana din Sibiu!

Greșeli frecvente

  • Pui parole sau chei API direct în cod. Citește-le din variabile de mediu, ca să nu ajungă în Git.
  • Folosești env['HOME']!: pe Windows variabila se numește USERPROFILE, iar ! aruncă o eroare când lipsește.

Comenzi înrudite

  • Platform: Clasa Platform dă informații despre sistemul pe care rulează programul: sistemul de operare, variabilele de mediu, procesorul.
  • Process.run: Pornește alt program, așteaptă să se termine și returnează ce a scris (stdout, stderr) și codul de ieșire.
  • Platform.script: Platform.script este adresa (Uri) fișierului Dart care rulează; executableArguments sunt opțiunile date mașinii virtuale Dart.