dart format în Dart

Comanda dart Dart 2.10

Rescrie automat codul Dart în stilul oficial: indentare, spații, rânduri de maxim 80 de caractere.

Sintaxă
dart format .                           # formatează toate fișierele
dart format lib/fisier.dart
dart format --output=show fisier.dart    # doar afișează rezultatul
dart format --set-exit-if-changed .      # pentru CI
dart format --page-width=100 .

Ce face dart format

dart format aplică stilul standard Dart: indentare cu 2 spații, spații în jurul operatorilor, acolade pe același rând, rânduri împărțite când depășesc 80 de caractere. Nu există opțiuni de stil (cu excepția lățimii), așa că tot codul Dart arată la fel, indiferent cine l-a scris.

Implicit modifică fișierele pe loc și afișează câte au fost schimbate. Cu --output=show doar afișează rezultatul, iar cu --set-exit-if-changed iese cu codul 1 dacă vreun fișier nu era formatat: în CI, asta verifică faptul că tot codul trimis a fost formatat.

Formatorul nu schimbă ce face codul, doar spațiile și rândurile. Din Dart 3.7, el decide singur unde pune virgulele de la final în listele de argumente.

Parametri

Parametru Descriere
--output=show|none|write Afișează rezultatul, nu scrie nimic sau scrie în fișiere (implicit).
--set-exit-if-changed Cod de ieșire 1 dacă un fișier ar fi modificat.
--page-width Lățimea maximă a rândului (implicit 80).

Exemple

Exemplul 1: Cod scris înghesuit

--output=show afișează forma formatată, fără să schimbe fișierul.

// lib/produs.dart, înainte:
class Produs{final String nume;final double pret;
Produs(this.nume,this.pret);
String eticheta( ){return '$nume: ${pret.toStringAsFixed(2)} lei';}}
List<Produs> oferta()=>[Produs('Cafea',24.5),Produs('Lapte',7.25),Produs('Pâine de casă cu semințe',9.0)];

// în terminal:
// dart format --output=show lib/produs.dart

Rezultat în terminal

class Produs {
  final String nume;
  final double pret;
  Produs(this.nume, this.pret);
  String eticheta() {
    return '$nume: ${pret.toStringAsFixed(2)} lei';
  }
}

List<Produs> oferta() => [
  Produs('Cafea', 24.5),
  Produs('Lapte', 7.25),
  Produs('Pâine de casă cu semințe', 9.0),
];
Formatted 1 file (1 changed) in 0.01 seconds.

Exemplul 2: Verificare în CI și formatarea proiectului

Prima comandă găsește fișierul neformatat și iese cu 1; a doua îl formatează; la a treia nu mai este nimic de schimbat.

dart format --set-exit-if-changed --output=none .; echo "cod: $?"
dart format .
dart format .

Rezultat în terminal

Changed lib/produs.dart
Formatted 4 files (1 changed) in 0.01 seconds.
cod: 1
Formatted lib/produs.dart
Formatted 4 files (1 changed) in 0.01 seconds.
Formatted 4 files (0 changed) in 0.00 seconds.

Greșeli frecvente

  • Să formatezi manual și să te cerți pe stil în echipă: rulează dart format (sau formatarea la salvare din editor) și gata.
  • Să aștepți ca dart format să repare erori: dacă fișierul are erori de sintaxă, nu îl poate formata.
  • Să schimbi --page-width doar pe calculatorul tău: setează lățimea în analysis_options.yaml (formatter: page_width:), ca toată echipa să folosească aceeași.

Comenzi înrudite

  • dart analyze: Verifică codul fără să-l ruleze și raportează erori, avertismente și sfaturi de stil (infos).
  • dart create: Creează un proiect Dart nou dintr-un șablon: aplicație de consolă, pachet, server sau aplicație web.