From 0ad2fce4f329611e2da09882b79086213a52ef90 Mon Sep 17 00:00:00 2001 From: vjrj Date: Wed, 27 Jun 2018 08:59:23 +0200 Subject: [PATCH] Persist your saved locations --- lib/activeFires.dart | 11 ++++++----- lib/globals.dart | 4 +++- lib/mainCommon.dart | 15 ++++++++------- lib/yourLocation.dart | 18 ------------------ ...onPersist.dart => yourLocationPersist.dart} | 4 ++-- 5 files changed, 19 insertions(+), 33 deletions(-) rename lib/{basicLocationPersist.dart => yourLocationPersist.dart} (90%) diff --git a/lib/activeFires.dart b/lib/activeFires.dart index 40dd599..ea1e3c8 100644 --- a/lib/activeFires.dart +++ b/lib/activeFires.dart @@ -13,6 +13,7 @@ import 'locationUtils.dart'; import 'mainDrawer.dart'; import 'placesAutocompleteUtils.dart'; import 'yourLocation.dart'; +import 'yourLocationPersist.dart'; class ActiveFiresPage extends StatefulWidget { static const String routeName = '/fires'; @@ -60,9 +61,9 @@ class _ActiveFiresPageState extends State { onPressed: () { loc.subscribed = !loc.subscribed; int i = globals.yourLocations.indexOf(loc); - YourLocationRepository.repo.update(i, loc); globals.yourLocations.removeAt(i); globals.yourLocations.insert(i, loc); + persistYourLocations(); setState(() {}); }), title: new Text(loc.description), @@ -102,7 +103,8 @@ class _ActiveFiresPageState extends State { void handleUndo(YourLocation item) { setState(() { - YourLocationRepository.repo.save(item); + globals.yourLocations.add(item); + persistYourLocations(); }); } @@ -114,8 +116,7 @@ class _ActiveFiresPageState extends State { onDismissed: (DismissDirection direction) { setState(() { globals.yourLocations.remove(item); - int i = globals.yourLocations.indexOf(item); - YourLocationRepository.repo.remove(i); + persistYourLocations(); }); _scaffoldKey.currentState.showSnackBar(new SnackBar( @@ -207,7 +208,7 @@ class _ActiveFiresPageState extends State { } else this.setState(() { globals.yourLocations.add(newLocation); - YourLocationRepository.repo.save(newLocation); + persistYourLocations(); new Timer(new Duration(milliseconds: 1000), () { showLocationMap(newLocation); }); diff --git a/lib/globals.dart b/lib/globals.dart index aa5f397..8cd3edd 100644 --- a/lib/globals.dart +++ b/lib/globals.dart @@ -2,6 +2,8 @@ library fires.globals; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'dart:async'; import 'yourLocation.dart'; @@ -14,7 +16,7 @@ final Widget appMediumIcon = Image.asset('images/logo-200.png', width: 60.0, height: 60.0); final Widget appIcon = Image.asset('images/logo-200.png', width: 24.0, height: 24.0); -// final Future prefs = SharedPreferences.getInstance(); +final Future prefs = SharedPreferences.getInstance(); List yourLocations = []; final GetIt getIt = new GetIt(); bool isDevelopment = false; diff --git a/lib/mainCommon.dart b/lib/mainCommon.dart index cad64c2..18492fc 100644 --- a/lib/mainCommon.dart +++ b/lib/mainCommon.dart @@ -7,6 +7,8 @@ import 'firebaseMessagingConf.dart'; import 'firesApp.dart'; import 'globals.dart' as globals; import 'yourLocation.dart'; +import 'yourLocationPersist.dart'; + Future> loadSecrets() async { return await SecretLoader(secretPath: 'assets/private-settings.json').load(); } @@ -16,13 +18,12 @@ void mainCommon() { globals.gmapKey = secrets['gmapKey']; globals.firesApiKey = secrets['firesApiKey']; globals.firesApiUrl = secrets['firesApiUrl'] + "api/v1/"; - YourLocationRepository.repo.remove(0); - YourLocationRepository.repo.getAll().then((yourLocations) { - globals.yourLocations = yourLocations; - firebaseConfig(); + globals.prefs.then((prefs) { + loadYourLocationsWithPrefs(prefs); + firebaseConfig(); - // Run baby run! - runApp(new FiresApp()); + // Run baby run! + runApp(new FiresApp()); + }); }); - }); } diff --git a/lib/yourLocation.dart b/lib/yourLocation.dart index 6bca1c3..a6e0175 100644 --- a/lib/yourLocation.dart +++ b/lib/yourLocation.dart @@ -58,21 +58,3 @@ class YourLocation extends Object with _$YourLocationSerializerMixin { description.hashCode ^ subscribed.hashCode; } - -class YourLocationRepository extends PreferencesRepository { - - static final repo = new YourLocationRepository(); - - YourLocationRepository() : super(); - - @override - YourLocation deserialize(String s) { - - return YourLocation.fromJson(json.decode(s)); - } - - @override - String serialize(YourLocation y) { - return json.encode(y.toJson()); - } -} diff --git a/lib/basicLocationPersist.dart b/lib/yourLocationPersist.dart similarity index 90% rename from lib/basicLocationPersist.dart rename to lib/yourLocationPersist.dart index a6ea7cf..5e1a69e 100644 --- a/lib/basicLocationPersist.dart +++ b/lib/yourLocationPersist.dart @@ -1,5 +1,5 @@ import 'dart:convert'; -import 'basicLocation.dart'; +import 'yourLocation.dart'; import 'globals.dart' as globals; import 'package:shared_preferences/shared_preferences.dart'; @@ -30,7 +30,7 @@ void loadYourLocationsWithPrefs(SharedPreferences prefs) { } yourLocations.forEach((locationString) { Map locationMap = json.decode(locationString); - globals.yourLocations.add(BasicLocation.fromJson(locationMap)); + globals.yourLocations.add(YourLocation.fromJson(locationMap)); }); }); }