commit | ed47cc0480f7fdf4b736081623db9c3db66fb97f | [log] [tgz] |
---|---|---|
author | Paul Berry <stereotype441@gmail.com> | Thu Mar 01 19:19:55 2018 +0100 |
committer | Todd Volkert <tvolkert@users.noreply.github.com> | Thu Mar 01 10:19:55 2018 -0800 |
tree | 4c32b387711415041355f74fe5cf1974fad3f0bb | |
parent | bc6ce1fd924713f487706c98db13e53c369f902c [diff] |
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();