From b705142d48b4a769fb1b81437d69cbe02f36531d Mon Sep 17 00:00:00 2001 From: mandreshope Date: Thu, 19 Jun 2025 16:56:13 +0300 Subject: [PATCH] feat: Adds logout functionality Adds a logout button to the home page app bar. Implements the logout logic in the login page model, clearing the stored user token. Navigates to the splash screen after logout to handle redirection based on the updated authentication state. --- lib/pages/home_page/home_page.dart | 17 +++++++++++++++++ lib/pages/login_page/login_page_model.dart | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/lib/pages/home_page/home_page.dart b/lib/pages/home_page/home_page.dart index e51c748..b8f3c2a 100644 --- a/lib/pages/home_page/home_page.dart +++ b/lib/pages/home_page/home_page.dart @@ -1,3 +1,5 @@ +import 'package:barcode_scanner/pages/login_page/login_page_model.dart'; +import 'package:barcode_scanner/router/go_router_builder.dart'; import 'package:barcode_scanner/router/go_secure_router_builder.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -15,6 +17,21 @@ class _HomePageState extends ConsumerState { final primaryColor = Theme.of(context).primaryColor; return Scaffold( + appBar: AppBar( + backgroundColor: Colors.white, + automaticallyImplyLeading: false, + actions: [ + IconButton( + onPressed: () async { + await ref.read(loginPageModelProvider.notifier).logOut(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + SplashRoute().go(context); + }); + }, + icon: Icon(Icons.login), + ), + ], + ), backgroundColor: Colors.white, body: Center( child: SingleChildScrollView( diff --git a/lib/pages/login_page/login_page_model.dart b/lib/pages/login_page/login_page_model.dart index a8dbd84..4024374 100644 --- a/lib/pages/login_page/login_page_model.dart +++ b/lib/pages/login_page/login_page_model.dart @@ -91,6 +91,11 @@ class LoginPageModel extends StateNotifier { SplashRoute().go(context); }); } + + Future logOut() async { + await secureStorage.delete(key: TokenProvider.tokenKey); + await checkHasUserConnected(); + } } @freezed