appendDataToFile method

Future<void> appendDataToFile(
  1. Object? data,
  2. DataType dataType, {
  3. String? fileName,
  4. String? path,
})

Appends data to an existing file on disk.

  • When path is provided it takes precedence over fileName.
  • Otherwise the file is looked up inside filesPath using fileName.
  • dataType drives how data is appended: strings are appended as text, base64 strings are decoded first, bytes are appended as-is.

Does nothing when data is null/empty or when the target file does not exist.

Implementation

Future<void> appendDataToFile(
  Object? data,
  DataType dataType, {
  String? fileName,
  String? path,
}) async {
  if (data == null) return;
  if (data is String && data.isEmpty) return;
  if (data is List && data.isEmpty) return;

  final String resolved = await _resolvePath(fileName, path);
  final File file = File(resolved);
  if (!file.existsSync()) return;

  switch (dataType) {
    case DataType.text:
      file.writeAsStringSync(data as String, mode: FileMode.append);
      break;
    case DataType.base64:
      file.writeAsBytesSync(
        base64Decode(data as String),
        mode: FileMode.append,
      );
      break;
    case DataType.bytes:
      file.writeAsBytesSync(data as Uint8List, mode: FileMode.append);
      break;
  }
}