Uri în Dart

Adrese web (Uri) Dart 1.0

O adresă web (URL) sau de fișier, desfăcută în părți: schemă, host, port, cale, parametri și fragment.

Sintaxă
static Uri parse(String uri, [int start = 0, int? end])
Uri({String? scheme, String? userInfo, String? host, int? port, String? path,
    Iterable<String>? pathSegments, String? query,
    Map<String, dynamic>? queryParameters, String? fragment})

Ce face Uri

Uri reprezintă o adresă ca https://dexblog.ro:443/invata/dart/?q=uri#exemple, desfăcută în părți: scheme (https), host, port, path, query și fragment (după #). Uri.parse(text) creează obiectul dintr-un text. La un text invalid aruncă FormatException; Uri.tryParse returnează null.

Constructorul Uri(...) face drumul invers: construiește adresa din părți și se ocupă singur de codificarea caracterelor speciale (spații, diacritice). toString() dă adresa completă. Obiectele Uri sunt imutabile; pentru modificări folosești replace.

Pentru parametrii din adresă vezi queryParameters, iar pentru adrese HTTPS construite rapid Uri.https.

Parametri

Parametru Descriere
uri La parse: textul adresei.
scheme, host, port, path, ... La constructor: părțile adresei.

Ce returnează

Un obiect Uri.

Exemple

Exemplul 1: Desfacerea unei adrese

void main() {
  var u = Uri.parse('https://dexblog.ro:8443/invata/dart/uri/?q=adresa&pag=2#exemple');
  print(u.scheme);
  print(u.host);
  print(u.port);
  print(u.path);
  print(u.query);
  print(u.fragment);
  print(u.hasQuery);
  print(Uri.parse('https://dexblog.ro').port);
  print(Uri.tryParse('http://[gresit'));
}

Rezultat

https
dexblog.ro
8443
/invata/dart/uri/
q=adresa&pag=2
exemple
true
443
null

Exemplul 2: Construirea unei adrese din părți

Spațiile și diacriticele sunt codificate automat.

void main() {
  var u = Uri(
    scheme: 'https',
    host: 'exemplu.ro',
    path: '/cauta/orase',
    queryParameters: {'nume': 'Târgu Mureș', 'judet': 'MS'},
    fragment: 'rezultate',
  );
  print(u);
  print(u.queryParameters['nume']);
  var fisier = Uri.file('/home/ana/documente/raport final.pdf');
  print(fisier);
}

Rezultat

https://exemplu.ro/cauta/orase?nume=T%C3%A2rgu+Mure%C8%99&judet=MS#rezultate
Târgu Mureș
file:///home/ana/documente/raport%20final.pdf

Greșeli frecvente

  • Construiești adrese lipind texte: 'https://site.ro/?oras=' + oras. Spațiile, & și diacriticele strică adresa. Folosește Uri(...) sau Uri.https.
  • Te aștepți ca Uri.parse să verifice dacă adresa există. Verifică doar forma textului.

Comenzi înrudite

  • Uri.queryParameters: queryParameters dă parametrii de după ? ca Map, decodificați; pathSegments dă bucățile căii, ca listă.
  • Uri.https: Construiește rapid o adresă https:// (sau http:// cu Uri.http) din domeniu, cale și parametri.
  • Uri.replace: Returnează o copie a adresei în care sunt înlocuite doar părțile date (de exemplu parametrii sau calea).
  • Uri.resolve: Calculează adresa completă a unui link relativ (ca ../poza.png), pornind de la adresa curentă.
  • Uri.encodeComponent: Codifică un text ca să poată sta în siguranță într-o bucată de URL (spații, diacritice, &, /) și invers.