cpd_2024_todo/lib/database/andereAbspeicherung.dart

48 lines
1.4 KiB
Dart

import 'dart:convert';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:todo/buisness/ToDoItem.dart';
import 'package:todo/database/DatabaseInterface.dart';
class andereAbspeicherung implements DatabaseInterface {
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async {
final path = await _localPath;
File file = File('$path/dataSeq.txt');
if (!file.existsSync()) {
file = await file.create();
await file.writeAsString('[]');
}
return file;
}
@override
Future<List<ToDoItem>> getToDoItems() async {
final file = await _localFile;
final contents = await file.readAsString();
List<dynamic> contentJson = jsonDecode(contents);
List<ToDoItem> _toDoList = contentJson.map((item) => ToDoItem.fromMap(item)).toList();
return _toDoList;
}
@override
Future<File> insertToDoItem(ToDoItem item) async {
item.id = DateTime.now().millisecondsSinceEpoch;
List<ToDoItem> l = await getToDoItems();
l.add(item);
final file = await _localFile;
return file.writeAsString(jsonEncode(l.map((item) => item.toMap()).toList()));
}
@override
Future<File> updateToDoItem(ToDoItem item) async {
final file = await _localFile;
return file.writeAsString(item.toMap() as String);
}
}