Make ForwardingDirectory generic. (#74) Due to an upcoming change in Dart 2.0 (https://github.com/dart-lang/sdk/issues/32148), it will no longer be allowed for a class to implement the same generic interface in different ways. (E.g. a class cannot implement/extend/mixin both A<int> and A<String>). This causes problems with _LocalDirectory. It extends _LocalFileSystemEntity<_LocalDirectory, Directory>, which extends ForwardingFileSystemEntity<_LocalDirectory, Directory>, but it mixes in ForwardingDirectory, which extends ForwardingFileSystemEntity<Directory, io.Directory>. The solution is to make ForwardingDirectory a generic mixin, with ForwardingDirectory<T> extending ForwardingFileSystemEntity<T, io.Directory>. Type inference automatically fills in the type argument T=_LocalDirectory at the site of the declaration of _LocalDirectory.
A generic file system abstraction for Dart.
Like dart:io, package:file supplies a rich Dart-idiomatic API for accessing a file system.
Unlike dart:io, package:file:
Implement your own custom file system:
import 'package:file/file.dart'; class FooBarFileSystem implements FileSystem { ... }
Use the in-memory file system:
import 'package:file/memory.dart'; var fs = new MemoryFileSystem();
Use the local file system (requires dart:io access):
import 'package:file/local.dart'; var fs = const LocalFileSystem();