file actor
This commit is contained in:
parent
11e55a4f44
commit
8c165edc0c
5 changed files with 83 additions and 1 deletions
39
lib/src/file_actor.dart
Normal file
39
lib/src/file_actor.dart
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import 'dart:io';
|
||||
import 'package:actors/actors.dart';
|
||||
|
||||
sealed class FileMessage {
|
||||
const FileMessage();
|
||||
}
|
||||
|
||||
final class LoadFile extends FileMessage {
|
||||
final String path;
|
||||
const LoadFile(this.path);
|
||||
}
|
||||
|
||||
final class SaveFile extends FileMessage {
|
||||
final String path;
|
||||
final String content;
|
||||
const SaveFile(this.path, this.content);
|
||||
}
|
||||
|
||||
sealed class FileResult {
|
||||
const FileResult();
|
||||
}
|
||||
|
||||
final class FileLoaded extends FileResult {
|
||||
final String content;
|
||||
const FileLoaded(this.content);
|
||||
}
|
||||
|
||||
final class FileSaved extends FileResult {
|
||||
const FileSaved();
|
||||
}
|
||||
|
||||
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()),
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue