binary file r/w
This commit is contained in:
parent
8c165edc0c
commit
c14de9c3e9
2 changed files with 38 additions and 0 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
import 'package:actors/actors.dart';
|
||||
|
||||
sealed class FileMessage {
|
||||
|
|
@ -16,6 +17,17 @@ final class SaveFile extends FileMessage {
|
|||
const SaveFile(this.path, this.content);
|
||||
}
|
||||
|
||||
final class LoadBinaryFile extends FileMessage {
|
||||
final String path;
|
||||
const LoadBinaryFile(this.path);
|
||||
}
|
||||
|
||||
final class SaveBinaryFile extends FileMessage {
|
||||
final String path;
|
||||
final Uint8List bytes;
|
||||
const SaveBinaryFile(this.path, this.bytes);
|
||||
}
|
||||
|
||||
sealed class FileResult {
|
||||
const FileResult();
|
||||
}
|
||||
|
|
@ -29,11 +41,20 @@ final class FileSaved extends FileResult {
|
|||
const FileSaved();
|
||||
}
|
||||
|
||||
final class BinaryFileLoaded extends FileResult {
|
||||
final Uint8List bytes;
|
||||
const BinaryFileLoaded(this.bytes);
|
||||
}
|
||||
|
||||
class FileActor with Handler<FileMessage, FileResult> {
|
||||
@override
|
||||
Future<FileResult> handle(FileMessage message) => switch (message) {
|
||||
LoadFile(:final path) => File(path).readAsString().then(FileLoaded.new),
|
||||
SaveFile(:final path, :final content) =>
|
||||
File(path).writeAsString(content).then((_) => const FileSaved()),
|
||||
LoadBinaryFile(:final path) =>
|
||||
File(path).readAsBytes().then(BinaryFileLoaded.new),
|
||||
SaveBinaryFile(:final path, :final bytes) =>
|
||||
File(path).writeAsBytes(bytes).then((_) => const FileSaved()),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue