import 'dart:convert'; import 'dart:io'; import 'package:path_provider/path_provider.dart'; import 'package:training_planner/pages/logbook_page.dart'; import 'package:training_planner/services/log_service.dart'; class IncomeData { final DateTime firstDayOfMonth; final double income; IncomeData(this.firstDayOfMonth, this.income); IncomeData.fromJson(Map json) : firstDayOfMonth = DateTime.parse(json['firstDayOfMonth']), income = double.parse(json['income']); Map toJson() { return { 'firstDayOfMonth': firstDayOfMonth.toIso8601String(), 'income': income.toStringAsFixed(2), }; } } class LocalSalaryProviderService { Future get _localDir async { final directory = await getApplicationDocumentsDirectory(); return directory; } Future get _localPath async { final directory = await getApplicationDocumentsDirectory(); return directory.path; } Future _localFile() async { final path = await _localPath; String fullPath = '$path/income.json'; File file = File(fullPath); bool exists = await file.exists(); if (!exists) { LogService.log('creating ' + fullPath); await file.create(); await file.writeAsString(jsonEncode([])); } return File(fullPath); } Future> getSavedIncome() async { var file = await _localFile(); var data = await file.readAsString(); final Iterable iterable = await jsonDecode(data); List parsedData = List.from( iterable.map((model) => IncomeData.fromJson(model))); LogService.log('read ' + data); return parsedData; } Future writeSavedIncome(List data) async { var file = await _localFile(); List dataToStore = []; for (var item in data) { dataToStore.add(IncomeData(item.firstDayOfMonth, item.actualSalary)); } LogService.log('writing ' + jsonEncode(dataToStore)); file.writeAsString(jsonEncode(dataToStore)); } }