Ce face Uri.resolve
Paginile web conțin des linkuri relative: poza.png, ../index.html, /contact. baza.resolve(link) calculează adresa absolută, exact cum face browserul. Cu baza https://site.ro/blog/articol/, linkul poza.png devine https://site.ro/blog/articol/poza.png.
Regulile: un link care începe cu / pornește de la rădăcina site-ului; ../ urcă un nivel; un link absolut (cu schemă) rămâne neschimbat. Contează bara finală a bazei: fără ea, ultimul segment este considerat fișier și este înlocuit. resolveUri primește un Uri în loc de text.
Parametri
| Parametru | Descriere |
|---|---|
reference |
Linkul relativ sau absolut. |
Ce returnează
Un Uri nou, absolut.
Exemple
Exemplul 1: Linkuri relative
void main() {
var baza = Uri.parse('https://dexblog.ro/invata/dart/uri/');
print(baza.resolve('poza.png'));
print(baza.resolve('../string/'));
print(baza.resolve('/despre'));
print(baza.resolve('?pagina=2'));
print(baza.resolve('https://alt-site.ro/x'));
var fisier = Uri.parse('https://dexblog.ro/invata/index.html');
print(fisier.resolve('dart/'));
}
Rezultat
https://dexblog.ro/invata/dart/uri/poza.png
String
despre
Uri
https://alt-site.ro/x
https://dexblog.ro/invata/dart/
Exemplul 2: Linkurile absolute dintr-o pagină
void main() {
var pagina = Uri.parse('https://exemplu.ro/magazin/telefoane/lista.html');
var linkuri = ['detalii.html?id=5', '../accesorii/', '/cos', 'https://plata.ro/'];
for (var l in linkuri) {
print('$l → ${pagina.resolve(l)}');
}
}
Rezultat
detalii.html?id=5 → https://exemplu.ro/magazin/telefoane/detalii.html?id=5
../accesorii/ → https://exemplu.ro/magazin/accesorii/
/cos → https://exemplu.ro/cos
https://plata.ro/ → https://plata.ro/
Greșeli frecvente
- Uiți bara finală a bazei:
Uri.parse('https://site.ro/blog').resolve('poza.png')dăhttps://site.ro/poza.png, nu/blog/poza.png.
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.replace: Returnează o copie a adresei în care sunt înlocuite doar părțile date (de exemplu parametrii sau calea).