launchLink method

Future launchLink(
  1. String url,
  2. {String? title,
  3. String? description,
  4. String? buttonText,
  5. String? closeButtonText,
  6. Function? extraOnConfirmFunction,
  7. bool? isExternal}
)

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),
    );
  }
}