# cross_file 0.3.5+4

An abstraction to allow working with files across multiple platforms.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'cross_file:0.3.5+4'
```
Published: 2026-07-01T19:26:18.677938Z
Expected archive SHA-256: 92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51

Available in cache; verification: upstream_checksum
## Direct dependencies
- meta: ^1.3.0
- web: >=0.5.1 <2.0.0

## Package README (untrusted upstream documentation)
# cross_file

An abstraction to allow working with files across multiple platforms.

## Usage

Import `package:cross_file/cross_file.dart`, instantiate a `XFile`
using a path or byte array and use its methods and properties to
access the file and its metadata.

Example:

<?code-excerpt "example/lib/main.dart (Instantiate)"?>
```dart
final file = XFile('assets/hello.txt');

print('XFile from disk:');
print('- Path: ${file.path}');
print('- Name: ${file.name}');
print('- Length: ${await file.length()} bytes');
print('- Content: ${await file.readAsString()}');
```

You will find links to the API docs on the [pub page](https://pub.dev/packages/cross_file).

## MIME types

On web, `mimeType` reflects browser-provided file metadata when available.
Native implementations do not infer MIME types from file paths or contents.
On native platforms, `mimeType` returns the value explicitly passed to the
`XFile` constructor or `XFile.fromData`, if any.

## Web Limitations

`XFile` on the web platform is backed by [Blob](https://api.dart.dev/be/180361/dart-html/Blob-class.html)
objects and their URLs.

It seems that Safari hangs when reading Blobs larger than 4GB (your app will stop
without returning any data, or throwing an exception).

This package will attempt to throw an `Exception` before a large file is accessed
from Safari (if its size is known beforehand), so that case can be handled
programmatically.

### Browser compatibility

[![Data on Global support for Blob constructing](https://caniuse.bitsofco.de/image/blobbuilder.png)](https://caniuse.com/blobbuilder)

[![Data on Global support for Blob URLs](https://caniuse.bitsofco.de/image/bloburls.png)](https://caniuse.com/bloburls)

## Testing

This package supports both web and native platforms. Unit tests need to be split
in two separate suites (because native code cannot use `package:web`, and web code
cannot use `dart:io`).

When adding new features, it is likely that tests need to be added for both the
native and web platforms.

### Native tests

Tests for native platforms are located in the `x_file_io_test.dart`. Tests can
be run  with `dart test`.

### Web tests

Tests for the web platform live in the `x_file_html_test.dart`. They can be run
with `dart test -p chrome`.

## Changelog
## 0.3.5+4

* Adds a runnable `main` entry point and an additional `XFile.fromData`
  demonstration to the example.

## 0.3.5+3

* Clarifies native XFile.mimeType documentation.
* Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.

## 0.3.5+2

* Separates "Save As" implementation details from XFile web class.

## 0.3.5+1

* Replaces README mentions of `dart:html` with `package:web`.
* Updates minimum supported SDK version to Flutter 3.32/Dart 3.8.

## 0.3.5

* Fixes a bug where the bytes of an XFile, that is created using the `XFile.fromData` constructor, are ignored on web.
* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7.

## 0.3.4+2

* Adds support for `web: ^1.0.0`.

## 0.3.4+1

* Removes a few deprecated API usages.

## 0.3.4

* Updates to web code to package `web: ^0.5.0`.
* Updates SDK version to Dart `^3.3.0`.

## 0.3.3+8

* Now supports `dart2wasm` compilation.
* Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.

## 0.3.3+7

* Updates README to improve example of instantiating an XFile.
* Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.

## 0.3.3+6

* Improves documentation about ignored parameters in IO implementation.

## 0.3.3+5

* Adds pub topics to package metadata.
* Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.

## 0.3.3+4

* Reverts an accidental change in a constructor argument's nullability.

## 0.3.3+3

* **RETRACTED**
* Updates code to fix strict-cast violations.
* Updates minimum SDK version to Flutter 3.0.

## 0.3.3+2

* Fixes lint warnings in tests.
* Dartdoc correction for `readAsBytes` and `readAsString`.

## 0.3.3+1

* Fixes `lastModified` unimplemented error description.

## 0.3.3

* Removes unused Flutter dependencies.

## 0.3.2

* Improve web implementation so it can stream larger files.

## 0.3.1+5

* Unify XFile interface for web and mobile platforms

## 0.3.1+4

* The `dart:io` implementation of `saveTo` now does a file copy for path-based
  `XFile` instances, rather than reading the contents into memory.

## 0.3.1+3

* Fix example in README

## 0.3.1+2

* Fix package import in README
* Remove 'Get Started' boilerplate in README

## 0.3.1+1

* Rehomed to `flutter/packages` repository.

## 0.3.1

* Fix nullability of `XFileBase`'s `path` and `name` to match the
  implementations to avoid potential analyzer issues.

## 0.3.0

* Migrated package to null-safety.
* **breaking change** According to our unit tests, the API should be backwards-compatible. Some relevant changes were made, however:
  * Web: `lastModified` returns the epoch time as a default value, to maintain the `Future<DateTime>` return type (and not `null`)

## 0.2.1

* Prepare for breaking `package:http` change.

## 0.2.0

* **breaking change** Make sure the `saveTo` method returns a `Future` so it can be awaited and users are sure the file has been written to disk.

## 0.1.0+2

* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276))

## 0.1.0+1

* Update Flutter SDK constraint.

## 0.1.0

* Initial open-source release.







 
