parse static method
Implementation
static Uri? parse(String? url, {String? domain}) {
// null or missing url
if (url == null || url.trim() == "") return null;
// fix for fragment # in query parameter
// encode # to %23
if (url.contains("#")) {
var parts = url.split("?");
if (parts.length > 1) {
url = "${parts[0]}?${parts[1].replaceAll("#", "%23")}";
}
}
// invalid url?
Uri? uri = Uri.tryParse(url);
if (uri == null) return null;
// url is a data uri?
if (uri.data != null) return uri;
// because flutter is a SWA we need to ignore the /#/ for uri query param detection
if (url.contains("/#")) uri = Uri.tryParse(url.replaceFirst("/#", "/"));
if (uri == null) return null;
// remove empty segments
uri = uri.removeEmptySegments();
// resolve uri
uri = uri.toAbsolute(domain: domain);
// build query parameters
return uri;
}