LoginSignup
5
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-02-08

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側を実装しました。

こんな感じにした

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で動作させてみました。

s_Screenshot_20180207-012858.png

おわり

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?

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2