Edited at
DartDay 16

Dartを使って、Flutter と Html5 上で File のRead/Writeをしたみた。

More than 1 year has passed since last update.

Dart は、 サーバーサイド、 Html5、 iOS、 Android で 動作します。

Android と iOS は Flutter を利用します。 Html5 は WebDevを利用します。

残念ながら、Web用、スマートフォン用で APIが違います。

そこで、Html5 と Flutter で、同じInterface で 動作する File Package を作成してみました。


ことはじめ

今、実験的に Html でも、 Flutter でも動作可能な、ゲームフレームワークを、作成しています。

ゲームだと、「画像データのCacheしたり」、 「ゲームの記録を保存したり」する必要がでてきます。Key-ValueやSWのCacheなどを利用したりすることになります。

今回は、 Html5 の FileSystem API を利用して、Html5側を実装しました。


こんな感じにした

https://github.com/kyorohiro/umiuni2d_io

Interface を以下のように切りました。


interface.dart

abstract class Entry {

String get name;
String get path;
Future<bool> isDirectory();
Future<bool> isFile();
}

abstract class Directory extends Entry {
}

abstract class File extends Entry {
Future<int> writeAsBytes(List<int> buffer, int offset);
Future<List<int>> readAsBytes(int offset, int length);
Future<int> getLength();
Future<int> truncate(int fileSize);
}

abstract class FileSystem {
Future<FileSystem> mkdir(String path);
Future<FileSystem> rm(String path,{bool recursive: false});
Stream<Entry> ls(String path);
Future<Entry> wd();
Future<FileSystem> cd(String path);

Future<FileSystem> checkPermission();
Future<Directory> getHomeDirectory();

Future<bool> isFile(String path);
Future<bool> isDirectory(String path);
Future<Entry> getEntry(String path);
}


で、Html5とFlutterで動作させてみました。

おわり


REF

ということで、 Html5 と Flutter 上で動作する Audio Package

https://github.com/kyorohiro/umiuni2d_io/

以下でもアレコレ書いています。

https://medium.com/@kyorohiro_72753/file-api-with-dart-for-flutter-and-html5-59ee89f5f5b5


INFO FILESYSTEM API IS DEPRECATED?

https://github.com/w3c/filesystem-api/issues/8