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șteUri(...)sauUri.https. - Te aștepți ca
Uri.parsesă 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.