Uri.encodeComponent în Dart

Adrese web (Uri) Dart 1.0

Codifică un text ca să poată sta în siguranță într-o bucată de URL (spații, diacritice, &, /) și invers.

Sintaxă
static String encodeComponent(String component)
static String decodeComponent(String encodedComponent)

Ce face Uri.encodeComponent

Într-o adresă web, caractere ca spațiul, &, /, ?, # și literele cu diacritice trebuie scrise codificat, cu % urmat de cod hexazecimal (UTF-8). Uri.encodeComponent('Iași & Cluj') dă Ia%C8%99i%20%26%20Cluj. Uri.decodeComponent face transformarea inversă.

Folosește-le pentru o singură bucată a adresei (o valoare de parametru, un segment de cale), pentru că ele codifică și / și ?. Pentru o adresă întreagă există Uri.encodeFull, care lasă separatorii neatinși. Pentru formulare (unde spațiul devine +) există Uri.encodeQueryComponent.

De cele mai multe ori nu ai nevoie de ele direct: constructorii Uri(...) și Uri.https codifică singuri părțile.

Parametri

Parametru Descriere
component Textul de codificat.
encodedComponent Textul codificat.

Ce returnează

Un String.

Exemple

Exemplul 1: Codificare și decodificare

void main() {
  var text = 'Iași & Cluj / 2026?';
  var cod = Uri.encodeComponent(text);
  print(cod);
  print(Uri.decodeComponent(cod));
  print(Uri.encodeFull('https://exemplu.ro/căutare?oraș=Iași'));
  print(Uri.encodeQueryComponent('ana maria'));
  print(Uri.decodeComponent('Bra%C8%99ov'));
}

Rezultat

Ia%C8%99i%20%26%20Cluj%20%2F%202026%3F
Iași & Cluj / 2026?
https://exemplu.ro/c%C4%83utare?ora%C8%99=Ia%C8%99i
ana+maria
Brașov

Exemplul 2: Un link de partajare

void main() {
  var titlu = 'Rețete: sarmale & cozonac';
  var adresa = 'https://dexblog.ro/retete?id=7';
  var link = 'https://exemplu.ro/share?text=${Uri.encodeComponent(titlu)}&url=${Uri.encodeComponent(adresa)}';
  print(link);
  var u = Uri.parse(link);
  print(u.queryParameters['text']);
  print(u.queryParameters['url']);
}

Rezultat

https://exemplu.ro/share?text=Re%C8%9Bete%3A%20sarmale%20%26%20cozonac&url=https%3A%2F%2Fdexblog.ro%2Fretete%3Fid%3D7
Rețete: sarmale & cozonac
https://dexblog.ro/retete?id=7

Greșeli frecvente

  • Codifici o adresă întreagă cu encodeComponent și obții https%3A%2F%2F..., care nu mai funcționează ca link. Folosește encodeFull pentru adrese întregi.
  • Codifici de două ori: % devine %25 și textul ajunge stricat la destinație.

Comenzi înrudite

  • Uri: O adresă web (URL) sau de fișier, desfăcută în părți: schemă, host, port, cale, parametri și fragment.
  • 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.