Ability to cache currency selection (#5)

This commit is contained in:
2022-09-07 00:16:49 +01:00
committed by GitHub
parent 3c1ecd76c2
commit 5104fc674e
13 changed files with 415 additions and 172 deletions

View File

@@ -0,0 +1,6 @@
class CurrencyPair {
String? currencyOne;
String? currencyTwo;
CurrencyPair(this.currencyOne, this.currencyTwo);
}

View File

@@ -0,0 +1,27 @@
import 'dart:ffi';
import 'package:shared_preferences/shared_preferences.dart';
import 'CurrencyPair.dart';
const String CURRENCY_ONE = "conversion_one";
const String CURRENCY_TWO = "conversion_two";
class PreferenceProvider {
late final SharedPreferences _prefs;
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
}
Future<void> saveConversionPair(String s1, String s2) async {
await _prefs.setString(CURRENCY_ONE, s1);
await _prefs.setString(CURRENCY_TWO, s2);
}
CurrencyPair getConversionPair() {
String? s1 = _prefs.getString(CURRENCY_ONE);
String? s2 = _prefs.getString(CURRENCY_TWO);
return CurrencyPair(s1, s2);
}
}

View File

@@ -0,0 +1,6 @@
import '../prefs/CurrencyPair.dart';
abstract class Repository {
CurrencyPair getConversionPair();
Future<void> setConversionPair(String fromCurrency, String toCurrency);
}

View File

@@ -0,0 +1,20 @@
import 'package:easy_cc_flutter/data/prefs/CurrencyPair.dart';
import 'package:easy_cc_flutter/data/prefs/PreferenceProvider.dart';
import '../../locator.dart';
import 'Repository.dart';
class RepositoryImpl extends Repository {
final PreferenceProvider _prefs = locator<PreferenceProvider>();
@override
CurrencyPair getConversionPair() {
return _prefs.getConversionPair();
}
@override
Future<void> setConversionPair(String fromCurrency, String toCurrency) {
return _prefs.saveConversionPair(fromCurrency, toCurrency);
}
}