Flutterアプリで端末の総容量と空き容量を取得する
使うパッケージ
disk_space
というパッケージを使用する。端末の容量を取得できるFlutterパッケージとしては以下も存在したが、今回は見送る。
storage_capacity
- 最後のコミットが2020年12月。pub.devでのlikeも少ない。
storage_space
- 上記の
disk_space
とstorage_capacity
をreworkさせたパッケージらしいが、disk_space
の方が最終コミットが数ヶ月新しいし、pub.devでのlikeも多い。
- 上記の
使い方
端末の容量を取得するためのパッケージなのでAPIもシンプル。
import 'package:disk_space/disk_space.dart';
// 総容量を取得。単位はMB。
final totalSpace = await DiskSpace.getTotalDiskSpace;
// 空き容量を取得。単位はMB。
final freeSpace = await DiskSpace.getFreeDiskSpace;
path_provider
を使ってディレクトリごとの空き容量も取得できるようだ。
import 'dart:io';
import 'package:disk_space/disk_space.dart';
import 'package:path_provider/path_provider.dart';
List<Directory> directories;
if (Platform.isIOS) {
directories = [await getApplicationDocumentsDirectory()];
} else if (Platform.isAndroid) {
directories = await getExternalStorageDirectories(type: StorageDirectory.movies);
if (directories == null) {
directories = [await getApplicationDocumentsDirectory()]
}
} else {
directories = [];
}
for (final directory in directories) {
// ディレクトリごとの空き容量を取得
final space = await DiskSpace.getFreeDiskSpaceForPath(directory.path);
}
おわり
シンプルでもこういったパッケージがあるのはありがたい。なかった場合はMethodChannelを使った自作実装を覚悟していた。