Added: login/logout logic, session storage
This commit is contained in:
		
							
								
								
									
										58
									
								
								lib/services/session_manager.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								lib/services/session_manager.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:shared_preferences/shared_preferences.dart';
 | 
			
		||||
 | 
			
		||||
class SessionManager extends ChangeNotifier {
 | 
			
		||||
  static final SessionManager _instance = SessionManager._internal();
 | 
			
		||||
  factory SessionManager() => _instance;
 | 
			
		||||
  SessionManager._internal();
 | 
			
		||||
 | 
			
		||||
  bool _loggedIn = false;
 | 
			
		||||
  String? _token;
 | 
			
		||||
  String? _email;
 | 
			
		||||
  String? _name;
 | 
			
		||||
 | 
			
		||||
  bool get isLoggedIn => _loggedIn;
 | 
			
		||||
  String? get token => _token;
 | 
			
		||||
  String? get email => _email;
 | 
			
		||||
  String? get name => _name;
 | 
			
		||||
 | 
			
		||||
  final _prefs = SharedPreferencesAsync(); // ✅ New API
 | 
			
		||||
 | 
			
		||||
  Future<void> init() async {
 | 
			
		||||
    _token = await _prefs.getString('token');
 | 
			
		||||
    _email = await _prefs.getString('email');
 | 
			
		||||
    _name = await _prefs.getString('name');
 | 
			
		||||
 | 
			
		||||
    _loggedIn = _token != null;
 | 
			
		||||
    notifyListeners();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<void> login({
 | 
			
		||||
    required String token,
 | 
			
		||||
    required String email,
 | 
			
		||||
    String? name,
 | 
			
		||||
  }) async {
 | 
			
		||||
    await _prefs.setString('token', token);
 | 
			
		||||
    await _prefs.setString('email', email);
 | 
			
		||||
    if (name != null) await _prefs.setString('name', name);
 | 
			
		||||
 | 
			
		||||
    _token = token;
 | 
			
		||||
    _email = email;
 | 
			
		||||
    _name = name;
 | 
			
		||||
    _loggedIn = true;
 | 
			
		||||
    notifyListeners();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<void> logout() async {
 | 
			
		||||
    await _prefs.remove('token');
 | 
			
		||||
    await _prefs.remove('email');
 | 
			
		||||
    await _prefs.remove('name');
 | 
			
		||||
 | 
			
		||||
    _token = null;
 | 
			
		||||
    _email = null;
 | 
			
		||||
    _name = null;
 | 
			
		||||
    _loggedIn = false;
 | 
			
		||||
    notifyListeners();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user