launchLink method
Implementation
Future launchLink(
String url, {
String? title,
String? description,
String? buttonText,
String? closeButtonText,
Function? extraOnConfirmFunction,
bool? isExternal,
}) async {
if (isInternalLink(url)) {
String route = getInternalLinkRoute(url);
Map? parameters = getInternalLinkParameters(url);
if (ID_ROUTES.contains(route)) {
int? id = int.tryParse(parameters!['id']);
if (route == Routes.campaignInfo) {
navigateTo(route, arguments: id);
return;
}
if (route == Routes.actionInfo) {
if (id == null) {
navigateTo(Routes.explore);
return;
}
_causesService.getAction(id).then((CampaignAction action) {
navigateTo(route, arguments: action);
}).catchError((e) {
_dialogService.showDialog(BasicDialog(
title: "Error", description: "Error navigating to route"));
});
return;
}
}
navigateTo(route);
} else if ((isExternal ?? false) || isMailTo(url)) {
await launchLinkExternal(
url,
title: title,
description: description,
buttonText: buttonText,
closeButtonText: closeButtonText,
extraOnConfirmFunction: extraOnConfirmFunction,
);
} else {
if (extraOnConfirmFunction != null) extraOnConfirmFunction();
await browser.open(
url: Uri.parse(url),
);
}
}