saf_stream 0.11.2 copy "saf_stream: ^0.11.2" to clipboard
saf_stream: ^0.11.2 copied to clipboard

PlatformAndroid

Read and write Android SAF `DocumentFile`.

saf_stream #

pub package

Read and write Android SAF DocumentFile. Min SDK version: API 21.

For other SAF APIs, see saf_util

Usage #

  • File bytes: for small files or when memory is not a concern
    • Read: readFileBytes
    • Write: writeFileBytes
  • File streams: for large files
    • Read: readFileStream
    • Write: startWriteStream, writeChunk, endWriteStream
  • Non-SAF files: when you need to interact with standard local files
    • Copy to local file: copyToLocalFile
    • Paste local file into an SAF directory: pasteLocalFile
  • Custom read streams: when you need to skip bytes on native side instead of on Dart side using readFileStream
    • startReadCustomFileStream, readCustomFileStreamChunk, skipCustomFileStreamChunk, endReadCustomFileStream

Examples #

import 'package:saf_stream/saf_stream.dart';

final _safStreamPlugin = SafStream();

// Read file bytes.
List<int> fileBytes = await _safStreamPlugin.readFileBytes('<SAF file URI>');

// Write file bytes.
await _safStreamPlugin.writeFileBytes(
  // Dest SAF directory URI.
  '<SAF directory Uri>',
  // Dest file name.
  'file.txt',
  // MIME type.
  'text/plain',
  // Data to write.
  utf8.encode('Hello, World!')
);

// Read file stream.
Stream<List<int>> fileStream = await _safStreamPlugin.readFileStream('<SAF file URI>');

// Write file stream.
// Create a session.
final info = await _safStreamPlugin.startWriteStream('SAF directory URI ', '<SAF file URI>', 'text/plain');
final sessionID = info.session;
// Write chunk with a session ID.
await _safStreamPlugin.writeChunk(sessionID, utf8.encode('block 1'));
// Write another chunk.
await _safStreamPlugin.writeChunk(sessionID, utf8.encode('block 2'));
// Close the stream.
await _safStreamPlugin.endWriteStream(sessionID);
8
likes
150
points
1.21k
downloads

Publisher

verified publisherflutter-cavalry.com

Weekly Downloads

Read and write Android SAF `DocumentFile`.

Repository (GitHub)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on saf_stream