uploadFile method

Future<Map<String, dynamic>?> uploadFile({
  1. required String path,
  2. required File file,
  3. required String fileParam,
  4. Map<String, dynamic>? data,
})

Implementation

Future<Map<String, dynamic>?> uploadFile({
  required String path,
  required File file,
  required String fileParam,
  Map<String, dynamic>? data,
}) async {
  try {
    String fileName = file.path.split('/').last;

    // Create FormData with the file
    FormData formData = FormData.fromMap({
      fileParam: await MultipartFile.fromFile(file.path, filename: fileName),
      if (data != null) ...data, // Add any additional data if needed
    });

    String? token = await UFUtils.preferences.readAuthToken();
    // Send POST request with FormData
    Response response = await _dio.post(
      path,
      data: formData,
      options: Options(
        headers: {
          'authorization': 'bearer $token',
          "Content-Type": "multipart/form-data",
          "x-portal": "user",
        },
        extra: {"skipInterceptor": true},
      ),
    );

    return response.data;
  } catch (e) {
    rethrow;
  }
}