Skip to content

Commit

Permalink
feat: shared preferences + local storage
Browse files Browse the repository at this point in the history
  • Loading branch information
PauloLeal committed Jun 17, 2023
1 parent 5d1faff commit e8e804f
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 17 deletions.
32 changes: 32 additions & 0 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.1"
localstorage:
dependency: transitive
description:
name: localstorage
sha256: "1b5304491c85250b90807e0e2b3a6217d2739caea4871b820d42782572f880f4"
url: "https://pub.dev"
source: hosted
version: "4.0.1+2"
logging:
dependency: transitive
description:
Expand Down Expand Up @@ -527,6 +535,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.8.3"
path_provider:
dependency: transitive
description:
name: path_provider
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
url: "https://pub.dev"
source: hosted
version: "2.0.15"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
url: "https://pub.dev"
source: hosted
version: "2.0.27"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
path_provider_linux:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion lib/ftbase.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export 'services/firebase_notification_service.dart';
export 'services/firebase_service.dart';
export 'services/firebase_storage_service.dart';
export 'services/geolocation_service.dart';
export 'services/local_storage_service.dart';
export 'services/shared_preferences_service.dart';
export 'services/theme_service.dart';
export 'services/wakelock_service.dart';
export 'utils/exception_handler.dart';
Expand Down
28 changes: 17 additions & 11 deletions lib/services/local_storage_service.dart
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
import 'package:shared_preferences/shared_preferences.dart';
import 'package:localstorage/localstorage.dart';

class LocalStorageService {
LocalStorageService._privateConstructor();
final String storageName;
late final LocalStorage localStorage;

static final LocalStorageService instance = LocalStorageService._privateConstructor();
LocalStorageService._privateConstructor({required this.storageName}) {
localStorage = LocalStorage(storageName);
}

static final LocalStorageService global = LocalStorageService.getStorage("global");

static LocalStorageService getStorage(String storageName) =>
LocalStorageService._privateConstructor(storageName: storageName);

Future<String?> getString(String key, {String? defaultValue}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(key) ?? defaultValue;
Future<dynamic> get(String key, {String? defaultValue}) async {
await localStorage.ready;
return localStorage.getItem(key);
}

Future<void> putString(String key, String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
Future<void> put(String key, dynamic value) async {
await localStorage.setItem(key, value);
}

Future<void> clear() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();
await localStorage.clear();
}
}
22 changes: 22 additions & 0 deletions lib/services/shared_preferences_service.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:shared_preferences/shared_preferences.dart';

class SharedPreferencesService {
SharedPreferencesService._privateConstructor();

static final SharedPreferencesService instance = SharedPreferencesService._privateConstructor();

Future<String?> getString(String key, {String? defaultValue}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(key) ?? defaultValue;
}

Future<void> putString(String key, String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
}

Future<void> clear() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();
}
}
6 changes: 3 additions & 3 deletions lib/services/theme_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:ftbase/services/local_storage_service.dart';
import 'package:ftbase/services/shared_preferences_service.dart';
import 'package:json_theme/json_theme.dart';

enum ThemeType { DARK, LIGHT }
Expand Down Expand Up @@ -38,7 +38,7 @@ class ThemeService {
}

Future<void> _selectTheme() async {
String? t = await LocalStorageService.instance.getString(themeKey, defaultValue: ThemeType.LIGHT.toString());
String? t = await SharedPreferencesService.instance.getString(themeKey, defaultValue: ThemeType.LIGHT.toString());
if (t == ThemeType.DARK.toString()) {
_currentTheme = _darkTheme;
_currentThemeType = ThemeType.DARK;
Expand All @@ -49,7 +49,7 @@ class ThemeService {
}

Future<void> setTheme(ThemeType theme) async {
await LocalStorageService.instance.putString(themeKey, theme.toString());
await SharedPreferencesService.instance.putString(themeKey, theme.toString());
await _selectTheme();
if (onThemeChanged != null) {
await onThemeChanged!(_currentTheme);
Expand Down
4 changes: 2 additions & 2 deletions lib/utils/http_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:pretty_http_logger/pretty_http_logger.dart';

import '../services/local_storage_service.dart';
import '../services/shared_preferences_service.dart';

class HttpResponse {
final http.Response originalResponse;
Expand Down Expand Up @@ -105,7 +105,7 @@ class HttpUtils {
bool hasLog = false,
Uint8List? bytes,
}) async {
LocalStorageService ls = LocalStorageService.instance;
SharedPreferencesService ls = SharedPreferencesService.instance;
headers ??= {};
bool isUsingCache = false;

Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ dependencies:
app_settings: ^4.2.0
wakelock: ^0.6.2
pretty_http_logger: ^0.2.2
localstorage: ^4.0.1+2

dev_dependencies:
flutter_test:
Expand Down

0 comments on commit e8e804f

Please sign in to comment.