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 formatsă repare erori: dacă fișierul are erori de sintaxă, nu îl poate formata. - Să schimbi
--page-widthdoar pe calculatorul tău: setează lățimea înanalysis_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.