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.
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
FileandDirectorymethod has both anasync(Future<T>) and a blocking (*Sync) variant. - File operations —
read,write,exists,stat,delete,rename. - Directory operations —
create,exists,stat,delete,rename. - stdlib-style API —
Storage.initFile()andStorage.initDir()return factory functions that mirrordart: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
Useful Links
- Source & examples:
bindings/dart/ - Services & configuration: /services
- Concepts: Concepts
Next steps
- Getting started — build and run a minimal program.