Ce face export
export se folosește într-un fișier „vitrină” al unui pachet (de obicei lib/nume_pachet.dart). Codul real stă în lib/src/, împărțit în mai multe fișiere, iar fișierul principal le re-exportă. Cine folosește pachetul scrie un singur import și primește tot.
Cu show și hide alegi ce devine public. Funcțiile ajutătoare din src/ pot rămâne ascunse, chiar dacă nu încep cu _.
export nu face numele disponibile în fișierul care exportă; dacă îl folosești și acolo, ai nevoie și de un import. Exemplul folosește mai multe fișiere, așa că rezultatul este cel obținut rulând proiectul local.
Exemple
Exemplul 1: Un pachet cu un fișier principal
main.dart importă doar magazin.dart, dar poate folosi cuTva și costLivrare.
// lib/src/preturi.dart
double cuTva(double pret) => pret * 1.21;
// lib/src/livrare.dart
double costLivrare(String oras) => oras == 'București' ? 15 : 25;
double taxaTotala() => 2;
// lib/magazin.dart
export 'src/preturi.dart';
export 'src/livrare.dart' show costLivrare;
// main.dart
import 'lib/magazin.dart';
void main() {
print('Cafea cu TVA: ${cuTva(20).toStringAsFixed(2)} lei');
print('Livrare în Cluj: ${costLivrare('Cluj')} lei');
}
Rezultat (proiect cu mai multe fișiere)
Cafea cu TVA: 24.20 lei
Livrare în Cluj: 25.0 lei
Exemplul 2: Un nume ascuns cu show
taxaTotala nu a fost inclus în show, deci nu este vizibil prin magazin.dart.
// main.dart
import 'lib/magazin.dart';
void main() {
print(taxaTotala());
}
Rezultatul lui dart analyze
error - main.dart:4:9 - The function 'taxaTotala' isn't defined. Try importing the library that defines 'taxaTotala', correcting the name to the name of an existing function, or defining a function named 'taxaTotala'. - undefined_function
Greșeli frecvente
- Să importe utilizatorii direct din
lib/src/: e considerat cod intern, care se poate schimba. Exportă ce este public din fișierul principal. - Să crezi că
exportface numele disponibile în fișierul curent: ai nevoie și deimport. - Două fișiere exportate cu același nume public: conflict la import. Folosește
hidesaushow.
Comenzi înrudite
import: Face disponibile în fișierul curent numele publice ale altei biblioteci: din SDK, dintr-un pachet sau din proiect.library: Directiva de la începutul unui fișier Dart care marchează biblioteca, pentru documentație sau adnotări.part și part of: Împarte o singură bibliotecă în mai multe fișiere, care își văd reciproc și numele private.dart create: Creează un proiect Dart nou dintr-un șablon: aplicație de consolă, pachet, server sau aplicație web.