pickFiles method

Future<void> pickFiles()

Implementation

Future<void> pickFiles() async {
  if (isViewScreen.value) return;

  var result = await FilePicker.platform.pickFiles(
    allowMultiple: true,
    withData: true,
  );

  if (result == null || result.files.isEmpty) return;

  isLoading.value = true;
  uploadStatus.value = 'Uploading...';

  try {
    final fileBytesList = result.files.map((f) => f.bytes!).toList();
    final fileNames = result.files.map((f) => f.name).toList();

    var response =
    await apiService.uploadFileList(fileBytesList, fileNames, {
      'createdBy': context.createdBy,
      'FileTypeId': context.fileTypeId,
      'moduleId': context.moduleId,
    });

    if (response.statusCode == 200) {
      List<dynamic> uploadedData = response.data['data']['Result'];

      for (var item in uploadedData) {
        files.add(
          AddonsFunDetails(
            createdBy: context.createdBy,
            funRefVal: item['Path'].toString(),
            isActive: 1,
            addOnType: 'Files',
          ),
        );
      }

      uploadStatus.value = 'Upload successful';
    } else {
      uploadStatus.value = 'Upload failed';
    }
  } catch (e) {
    uploadStatus.value = 'Error: $e';
  } finally {
    isLoading.value = false;
  }
}