Added: login/logout logic, session storage
This commit is contained in:
		@@ -1,9 +1,16 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'signup.dart';
 | 
			
		||||
import 'package:provider/provider.dart';
 | 
			
		||||
import '../services/session_manager.dart';
 | 
			
		||||
 | 
			
		||||
class LoginScreen extends StatefulWidget {
 | 
			
		||||
  final VoidCallback onSwitchToSignup;
 | 
			
		||||
  const LoginScreen({required this.onSwitchToSignup, super.key});
 | 
			
		||||
  final VoidCallback onLoginSuccess; // ✅ ADD THIS
 | 
			
		||||
 | 
			
		||||
  const LoginScreen({
 | 
			
		||||
    required this.onSwitchToSignup,
 | 
			
		||||
    required this.onLoginSuccess, // ✅ ADD THIS
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  State<LoginScreen> createState() => _LoginScreenState();
 | 
			
		||||
@@ -18,10 +25,18 @@ class _LoginScreenState extends State<LoginScreen> {
 | 
			
		||||
    if (_formKey.currentState!.validate()) {
 | 
			
		||||
      final email = _emailController.text;
 | 
			
		||||
      final password = _passwordController.text;
 | 
			
		||||
      // TODO: Replace with actual login logic
 | 
			
		||||
      print('Logging in with $email and $password');
 | 
			
		||||
      if(email == "test@test.com" && password == "Test1234") {
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
      if (email == "test@test.com" && password == "Test1234") {
 | 
			
		||||
        Provider.of<SessionManager>(context, listen: false).login(
 | 
			
		||||
          token: "dummy_token",
 | 
			
		||||
          email: email,
 | 
			
		||||
          name: "John Doe",
 | 
			
		||||
        );
 | 
			
		||||
        widget.onLoginSuccess(); // ✅ FIXED: now defined
 | 
			
		||||
      } else {
 | 
			
		||||
        ScaffoldMessenger.of(context).showSnackBar(
 | 
			
		||||
          SnackBar(content: Text("Invalid credentials")),
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -29,7 +44,6 @@ class _LoginScreenState extends State<LoginScreen> {
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return Scaffold(
 | 
			
		||||
      //appBar: AppBar(title: Text('User Login')),
 | 
			
		||||
      body: Padding(
 | 
			
		||||
        padding: const EdgeInsets.all(24.0),
 | 
			
		||||
        child: Form(
 | 
			
		||||
 
 | 
			
		||||
@@ -1,30 +1,41 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:package_info_plus/package_info_plus.dart';
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:package_info_plus/package_info_plus.dart';
 | 
			
		||||
import 'package:provider/provider.dart';
 | 
			
		||||
import '../services/session_manager.dart';
 | 
			
		||||
 | 
			
		||||
class UserSettingsScreen extends StatelessWidget {
 | 
			
		||||
  final VoidCallback onLogout;
 | 
			
		||||
 | 
			
		||||
  const UserSettingsScreen({required this.onLogout, super.key});
 | 
			
		||||
 | 
			
		||||
  Future<String> _getVersion() async {
 | 
			
		||||
    final info = await PackageInfo.fromPlatform();
 | 
			
		||||
    //return 'Version: ${info.version}+${info.buildNumber}';
 | 
			
		||||
    return 'Version: ${info.version}';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    final session = Provider.of<SessionManager>(context);
 | 
			
		||||
    final userName = session.name ?? "Unknown User"; // fallback just in case
 | 
			
		||||
 | 
			
		||||
    return Scaffold(
 | 
			
		||||
      appBar: AppBar(title: Text('User settings')),
 | 
			
		||||
      body: Center(
 | 
			
		||||
        child: Column(
 | 
			
		||||
          mainAxisSize: MainAxisSize.min,
 | 
			
		||||
          children: [
 | 
			
		||||
            const Text(
 | 
			
		||||
              "Test User",
 | 
			
		||||
            Text(
 | 
			
		||||
              userName,
 | 
			
		||||
              style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold),
 | 
			
		||||
            ),
 | 
			
		||||
 | 
			
		||||
            SizedBox(height: 20),
 | 
			
		||||
            ElevatedButton.icon(
 | 
			
		||||
              onPressed: () {
 | 
			
		||||
                // TODO: Add sign-out logic here
 | 
			
		||||
              onPressed: () async {
 | 
			
		||||
                await session.logout();
 | 
			
		||||
                onLogout();
 | 
			
		||||
              },
 | 
			
		||||
              icon: Icon(Icons.logout),
 | 
			
		||||
              label: Text("Sign Out"),
 | 
			
		||||
@@ -53,3 +64,4 @@ class UserSettingsScreen extends StatelessWidget {
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user