downloadTicket static method

Future<void> downloadTicket(
  1. String ticketUrl
)

Implementation

static Future<void> downloadTicket(String ticketUrl) async {
  if (ticketUrl.isEmpty) {
    log('Invalid ticket URL');
    DefaultSnackbar.show("Error", 'Invalid ticket URL');
    return;
  }

  try {
    final response = await Dio()
        .get(ticketUrl, options: Options(responseType: ResponseType.bytes));
    if (response.statusCode == 200) {
      final blob = html.Blob([response.data]);
      final url = html.Url.createObjectUrl(blob);
      Uri uri = Uri.parse(url);
      List<String> pathSegments = uri.pathSegments;
      String fileName = pathSegments.last;
      fileName = Uri.decodeComponent(fileName);
      final anchor = html.AnchorElement(href: url);
      log('Failed to download Tciket: Status code $anchor $url');
      anchor.download = '$fileName.pdf';
      anchor.click();
      html.Url.revokeObjectUrl(url);
    } else {
      log('Failed to download Tciket: Status code ${response.statusCode}');
      DefaultSnackbar.show(
          "Error", 'Ticket Download Failed, Please contact customer support');
    }
  } catch (e) {
    log('Failed to download Ticket: $e');
    DefaultSnackbar.show(
        "Error", 'Ticket Download Failed, Please contact customer support');
  }
}