Skip to main content

Apache OpenDAL™ Dart Binding

A Dart binding for OpenDAL: access S3, GCS, Azure Blob, the local filesystem, and 50+ more services through one API, backed by the Rust core via flutter_rust_bridge.

The API follows the dart:io stdlib style — Storage, File, and Directory objects that should feel familiar to any Dart developer.

New to the model behind the API? Read Concepts first — service, operator, layer, and operation are the same four ideas in every language.

Experimental

This binding is a work in progress. The public API may change between releases. It is not yet published to pub.dev. Expect rough edges and missing features compared to the Rust core or the Python binding.

Capabilities

  • Async and sync — every File and Directory method has both an async (Future<T>) and a blocking (*Sync) variant.
  • File operationsread, write, exists, stat, delete, rename.
  • Directory operationscreate, exists, stat, delete, rename.
  • stdlib-style APIStorage.initFile() and Storage.initDir() return factory functions that mirror dart:io.

The binding currently exposes read, write, stat, exists, delete, rename, and createDir. Listing, copy, and presigned URLs are not yet surfaced.

Installation

This binding is not yet published to pub.dev. Add it as a path dependency from the repository, or build it from source following the Development guide.

The native Rust library must be compiled separately:

cd bindings/dart/rust
cargo build -r

Next steps

  1. Getting started — build and run a minimal program.