urlFileSaver method

Future<String?> urlFileSaver({
  1. required String url,
  2. String? fileName,
})

Implementation

Future<String?> urlFileSaver({required String url, String? fileName}) async {

  try {

    final extension = url.split(".").last.split("?").first;

    // Download image
    final http.Response response = await http.get(Uri.parse(url));

    // Get temporary directory
    final dir = await getTemporaryDirectory();

    fileName ??= getRandomString(10);
    // Create an image name
    var filename = '${dir.path}/$fileName.$extension';

    // Save to filesystem
    final file = File(filename);
    await file.writeAsBytes(response.bodyBytes);

    // Ask the user to save it
    final params = SaveFileDialogParams(sourceFilePath: file.path);
    final finalPath = await FlutterFileDialog.saveFile(params: params);

    return finalPath;
  } catch (e) {
    rethrow;
  }
}