save method

  1. @override
Future<List<FilesModel>> save({
  1. String toDirectory = "",
  2. String fromPath = "",
  3. File? fromFile,
  4. FilesModel? fromData,
  5. List<String> fromPaths = const [],
  6. List<File> fromFiles = const [],
  7. List<FilesModel> fromDataList = const [],
  8. AndroidPathOptions? androidPathOptions,
})
override

Future method save has String _ fromPath has String _ toDirectory has File _ fromFile has FilesModel _ fromData has List of String_ fromPaths has List of File_ fromFiles has List of FilesModel_ fromDataList has AndroidPathOptions _ androidPathOptions has List of FilesModel return Value

Implementation

@override
Future<List<FilesModel>> save(
    {String toDirectory = "",
    String fromPath = "",
    File? fromFile,
    FilesModel? fromData,
    List<String> fromPaths = const [],
    List<File> fromFiles = const [],
    List<FilesModel> fromDataList = const [],
    AndroidPathOptions? androidPathOptions}) async {
  List<FilesModel> successList = [];
  try {
    if (fromPath.isEmpty &&
        fromData == null &&
        fromFile == null &&
        fromPaths.isEmpty &&
        fromFiles.isEmpty &&
        fromDataList.isEmpty) {
      successList.add(FilesModel("Source Data", "No Source Data Found"));
      return successList;
    } else {
      List<FilesModel> fSourceList = [];
      if (fromPath.isNotEmpty) {
        final fPName = _checkFilePath(fromPath);
        if (fPName.isNotEmpty) {
          final file = File(fromPath);
          final fS = FilesModel(fPName, "", file.readAsBytesSync());
          fSourceList.add(fS);
        }
      }
      if (fromFile != null) {
        final fPName = _checkFilePath(fromFile.path);
        if (fPName.isNotEmpty) {
          final fS = FilesModel(fPName, "", fromFile.readAsBytesSync());
          fSourceList.add(fS);
        }
      }
      if (fromData != null) {
        if (fromData.value.isNotEmpty) {
          final fPName = _checkFilePath(fromData.value);
          if (fPName.isNotEmpty) {
            final file = File(fromData.value);
            final fS = FilesModel(fPName, "", file.readAsBytesSync());
            fSourceList.add(fS);
          }
        } else if (fromData.data != null) {
          if (fromData.valueName.isNotEmpty &&
              fromData.data!.isNotEmpty &&
              fromData.valueName.split(".").isNotEmpty) {
            final fPName = fromData.valueName.contains("/")
                ? fromData.valueName.replaceAll("/", Platform.pathSeparator)
                : fromData.valueName;
            final fS = FilesModel(fPName, "", fromData.data);
            fSourceList.add(fS);
          }
        }
      }
      if (fromPaths.isNotEmpty) {
        for (var i in fromPaths) {
          final fPName = _checkFilePath(i);
          if (fPName.isNotEmpty) {
            final file = File(i);
            final fS = FilesModel(fPName, "", file.readAsBytesSync());
            fSourceList.add(fS);
          }
        }
      }
      if (fromFiles.isNotEmpty) {
        for (var i in fromFiles) {
          final fPName = _checkFilePath(i.path);
          if (fPName.isNotEmpty) {
            final fS = FilesModel(fPName, "", i.readAsBytesSync());
            fSourceList.add(fS);
          }
        }
      }
      if (fromDataList.isNotEmpty) {
        for (var i in fromDataList) {
          if (i.value.isNotEmpty) {
            final fPName = _checkFilePath(i.value);
            if (fPName.isNotEmpty) {
              final file = File(i.value);
              final fS = FilesModel(fPName, "", file.readAsBytesSync());
              fSourceList.add(fS);
            }
          } else if (i.data != null) {
            if (i.valueName.isNotEmpty &&
                i.data!.isNotEmpty &&
                i.valueName.split(".").isNotEmpty) {
              final fPName = i.valueName.contains("/")
                  ? i.valueName.replaceAll("/", Platform.pathSeparator)
                  : i.valueName;
              final fS = FilesModel(fPName, "", i.data);
              fSourceList.add(fS);
            }
          }
        }
      }
      if (fSourceList.isNotEmpty) {
        String aVal1 = "";

        if (toDirectory.isNotEmpty) {
          final fDirectory = Directory(joinPath(toDirectory, ""));
          if (fDirectory.existsSync()) {
            aVal1 = fDirectory.path;
          } else {
            aVal1 = await _saveFile(fileName: fSourceList.first.valueName);
          }
        } else {
          aVal1 = await _saveFile(fileName: fSourceList.first.valueName);
        }
        final fType = _baseType(fSourceList.first.valueName);
        if (aVal1.isNotEmpty) {
          final aVal3 = aVal1.endsWith(fType)
              ? aVal1.substring(
                  0, aVal1.lastIndexOf(Platform.pathSeparator) + 1)
              : aVal1;
          for (var i in fSourceList) {
            final fF = File(joinPath(aVal3, i.valueName));
            fF.writeAsBytesSync(i.data!);
            successList.add(FilesModel(i.valueName, fF.path));
          }
        }
        return successList;
      } else {
        successList.add(FilesModel("Source Data", "No Source Data Found"));
        return successList;
      }
    }
  } catch (e) {
    successList.add(FilesModel("Exception", e.toString()));
    return successList;
  }
}