session_service.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'package:shared_preferences/shared_preferences.dart';
  2. abstract interface class SessionService {
  3. Future<String?> getLastRoom();
  4. Future<void> setLastRoom(String? room);
  5. Future<void> clearLastRoom();
  6. }
  7. final class SharedPreferencesSessionService implements SessionService {
  8. SharedPreferencesSessionService({SharedPreferences? prefs}) : _prefs = prefs;
  9. SharedPreferences? _prefs;
  10. Future<SharedPreferences> get _preferences async {
  11. if (_prefs != null) return _prefs!;
  12. _prefs = await SharedPreferences.getInstance();
  13. return _prefs!;
  14. }
  15. @override
  16. Future<String?> getLastRoom() async {
  17. final prefs = await _preferences;
  18. return prefs.getString(_roomKey);
  19. }
  20. @override
  21. Future<void> setLastRoom(String? room) async {
  22. final prefs = await _preferences;
  23. if (room == null) {
  24. await prefs.remove(_roomKey);
  25. } else {
  26. await prefs.setString(_roomKey, room);
  27. }
  28. }
  29. @override
  30. Future<void> clearLastRoom() async {
  31. final prefs = await _preferences;
  32. await prefs.remove(_roomKey);
  33. }
  34. static const _roomKey = 'asr_last_room';
  35. }