| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import 'dart:async' show Future;
- import 'dart:io' show File;
- import 'package:pb_authenticator_state/file_storage_base.dart';
- import 'package:path_provider/path_provider.dart'
- show getApplicationDocumentsDirectory;
- /// Loads/stores file to application storage directory
- ///
- /// From:
- /// * https://flutter.io/docs/cookbook/persistence/reading-writing-files
- class FileStorage extends FileStorageBase {
- /// Instantiates instance of FileStorage
- FileStorage();
- /// Gets path of Application Documents Directory.
- @override
- Future<String> getDataPath() async {
- final directory = await getApplicationDocumentsDirectory();
- return directory.path;
- }
- Future<File> _filePath(String filename) async {
- var path = await getDataPath();
- return File('$path/$filename');
- }
- /// Whether file is present.
- @override
- Future<bool> hasFile(String filename) async {
- final file = await _filePath(filename);
- return file.exists();
- }
- /// Reads from file into String.
- @override
- Future<String?> readFile(String filename) async {
- final file = await _filePath(filename);
- if (!await file.exists()) {
- return null;
- }
- return file.readAsString();
- }
- /// Writes to file.
- @override
- Future writeFile(String filename, String contents) async {
- final file = await _filePath(filename);
- await file.writeAsString(contents, flush: true);
- }
- }
|