Platform.script în Dart

Platform.script este adresa (Uri) fișierului Dart care rulează; executableArguments sunt opțiunile date mașinii virtuale Dart.

Sintaxă
static Uri get script
static List<String> get executableArguments

Ce face Platform.script

Platform.script returnează un Uri cu schema file spre scriptul pornit, de exemplu file:///home/ana/proiect/bin/main.dart. Cu File.fromUri(Platform.script) obții fișierul, iar cu .parent directorul lui, ca să găsești fișiere care stau lângă script, indiferent din ce director a fost pornit programul.

Platform.executableArguments conține opțiunile date lui dart înainte de numele scriptului, de exemplu --enable-asserts din dart --enable-asserts main.dart. Lista poate conține și opțiuni interne adăugate de lansatorul dart. Argumentele de după numele scriptului nu sunt aici: ele ajung în parametrul List<String> args al lui main.

Într-un program compilat cu dart compile exe, script indică executabilul, iar executableArguments este de obicei gol.

Exemple

Exemplul 1: Numele și schema scriptului

import 'dart:io';

void main() {
  final script = Platform.script;
  print('Schema: ${script.scheme}');
  print('Fișier: ${script.pathSegments.last}');
  print('Există pe disc: ${File.fromUri(script).existsSync()}');
}

Rezultat

Schema: file
Fișier: main.dart
Există pe disc: true

Exemplul 2: Programul își citește propriul cod

import 'dart:io';

void main() {
  final rinduri = File.fromUri(Platform.script).readAsLinesSync();
  print('Scriptul are ${rinduri.length} rânduri.');
  print('Primul rând: ${rinduri.first}');
}

Rezultat

Scriptul are 7 rânduri.
Primul rând: import 'dart:io';

Exemplul 3: Opțiunile date lui dart

Programul rulat cu dart --enable-asserts main.dart Ana: opțiunea apare în executableArguments, iar Ana în args.

import 'dart:io';

void main(List<String> args) {
  final asserturi = Platform.executableArguments.contains('--enable-asserts');
  print('Aserțiuni active: $asserturi');
  print('Argumentele programului: $args');
}

Rezultat în terminal

Aserțiuni active: true
Argumentele programului: [Ana]

Greșeli frecvente

  • Folosești Platform.script.path ca o cale de fișier pe Windows: are forma /C:/.... Folosește Platform.script.toFilePath() sau File.fromUri.
  • Cauți argumentele programului în executableArguments: ele sunt în parametrul lui main.

Comenzi înrudite

  • Platform: Clasa Platform dă informații despre sistemul pe care rulează programul: sistemul de operare, variabilele de mediu, procesorul.
  • Directory.current: Directorul curent al programului, față de care se interpretează căile relative; se poate și schimba.
  • File.parent: parent dă directorul în care se află fișierul; absolute dă același fișier cu calea completă, de la rădăcină.
  • Platform.version: Textul cu versiunea Dart care rulează programul, de forma „3.13.5 (stable) (data) on „macos_arm64″”.