Ce face Uri.replace
Uri este imutabil, așa că pentru a schimba o parte creezi o adresă nouă cu replace. Părțile pe care nu le dai rămân neschimbate: u.replace(scheme: 'https') păstrează domeniul, calea și parametrii.
Atenție: queryParameters înlocuiește toți parametrii, nu îi adaugă. Pentru a adăuga sau schimba unul singur, copiază întâi map-ul existent: {...u.queryParameters, 'pagina': '2'}. Pentru a scoate fragmentul, folosește removeFragment().
Parametri
| Parametru | Descriere |
|---|---|
scheme, host, port, path, ... |
Părțile care se înlocuiesc; cele lipsă rămân. |
Ce returnează
Un Uri nou.
Exemple
Exemplul 1: Schimbarea unor părți
void main() {
var u = Uri.parse('http://exemplu.ro/produse?categorie=carti&pagina=1#sus');
print(u.replace(scheme: 'https'));
print(u.replace(path: '/oferte'));
print(u.replace(queryParameters: {'pagina': '2'}));
print(u.replace(queryParameters: {...u.queryParameters, 'pagina': '2'}));
print(u.removeFragment());
print(u);
}
Rezultat
https://exemplu.ro/produse?categorie=carti&pagina=1#sus
http://exemplu.ro/oferte?categorie=carti&pagina=1#sus
http://exemplu.ro/produse?pagina=2#sus
http://exemplu.ro/produse?categorie=carti&pagina=2#sus
http://exemplu.ro/produse?categorie=carti&pagina=1
http://exemplu.ro/produse?categorie=carti&pagina=1#sus
Exemplul 2: Linkuri de paginare
void main() {
var curenta = Uri.parse('https://exemplu.ro/cauta?q=biciclete&oras=Iasi&pagina=3');
var pagina = int.parse(curenta.queryParameters['pagina'] ?? '1');
Uri laPagina(int p) => curenta.replace(queryParameters: {...curenta.queryParameters, 'pagina': '$p'});
print('Înapoi: ${laPagina(pagina - 1)}');
print('Înainte: ${laPagina(pagina + 1)}');
}
Rezultat
Înapoi: https://exemplu.ro/cauta?q=biciclete&oras=Iasi&pagina=2
Înainte: https://exemplu.ro/cauta?q=biciclete&oras=Iasi&pagina=4
Greșeli frecvente
- Dai
queryParameters: {'pagina': '2'}și pierzi ceilalți parametri. Combină-i cu cei existenți prin...u.queryParameters.
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.resolve: Calculează adresa completă a unui link relativ (ca ../poza.png), pornind de la adresa curentă.