Ce face import
Fiecare fișier Dart este o bibliotecă. Cu import folosești numele publice (cele care nu încep cu _) din altă bibliotecă. Adresa are trei forme: dart: pentru bibliotecile SDK-ului (dart:math, dart:io, dart:convert), package: pentru pachetele declarate în pubspec.yaml și o cale relativă pentru fișierele proiectului. dart:core (cu print, String, List) este importată automat.
show importă doar numele enumerate, iar hide le importă pe toate în afară de cele enumerate. Sunt utile când două biblioteci au nume identice. Alternativa este un prefix cu as: import 'dart:math' as math; și apoi math.max.
Importurile se scriu la începutul fișierului, după un eventual library. Analizorul te avertizează pentru importurile nefolosite (Unused import); în proiectul de pe acest site, un astfel de avertisment oprește build-ul.
Exemple
Exemplul 1: Biblioteci din SDK
dart:math pentru calcule și dart:convert pentru JSON.
import 'dart:convert';
import 'dart:math';
void main() {
final note = [8, 10, 7, 9];
print('Nota maximă: ${note.reduce(max)}');
print('Rădăcina lui 2: ${sqrt(2).toStringAsFixed(4)}');
print(jsonEncode({'elev': 'Ana', 'note': note}));
}
Rezultat
Nota maximă: 10
Rădăcina lui 2: 1.4142
{"elev":"Ana","note":[8,10,7,9]}
Exemplul 2: show și hide
Din dart:math luăm doar pi și pow; din dart:convert totul în afară de json, pentru că avem propria variabilă cu acest nume.
import 'dart:convert' hide json;
import 'dart:math' show pi, pow;
void main() {
const json = '{"oras": "Craiova"}';
final date = jsonDecode(json) as Map<String, dynamic>;
print('Oraș: ${date['oras']}');
const raza = 2.0;
print('Volumul sferei: ${(4 / 3 * pi * pow(raza, 3)).toStringAsFixed(2)}');
}
Rezultat
Oraș: Craiova
Volumul sferei: 33.51
Exemplul 3: Fișiere ale proiectului și pachete
Un proiect cu un pachet extern (intl, adăugat cu dart pub add intl) și un fișier propriu. Fișierul propriu se poate importa relativ sau prin package: cu numele proiectului.
// lib/preturi.dart
double cuTva(double pret) => pret * 1.21;
// bin/magazin.dart
import 'package:intl/intl.dart';
import 'package:magazin/preturi.dart';
void main() {
final format = NumberFormat.currency(locale: 'ro_RO', symbol: 'lei');
print(format.format(cuTva(1250)));
}
Rezultat (proiect cu mai multe fișiere)
1.512,50 lei
Greșeli frecvente
- Import nefolosit: avertismentul
Unused import: 'dart:math'. Șterge-l. - Un pachet importat cu
package:dar neadăugat înpubspec.yaml:Target of URI doesn't exist. Ruleazădart pub add nume. - Două biblioteci cu același nume exportat:
The name 'X' is defined in the libraries .... Foloseșteshow,hidesau un prefixas.
Comenzi înrudite
export: Face ca numele dintr-o altă bibliotecă să fie disponibile și celor care importă biblioteca curentă.library: Directiva de la începutul unui fișier Dart care marchează biblioteca, pentru documentație sau adnotări.deferred: Import amânat: biblioteca se încarcă abia când apelezi loadLibrary(), util pe web pentru a micșora încărcarea inițială.as: Spune că o valoare are un anumit tip (cast); dacă nu are, aruncă TypeError. Tot as dă un prefix unui import.dart pub: Managerul de pachete Dart: adaugă, descarcă și actualizează dependențele de pe pub.dev.