Add log out button

This commit is contained in:
2025-09-25 18:53:44 +02:00
parent c5089f8de1
commit c0091e7f44
2 changed files with 23 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:sheetless/login_page.dart';
import 'package:sheetless/sheet_viewer_page.dart'; import 'package:sheetless/sheet_viewer_page.dart';
import 'package:sheetless/storage_helper.dart'; import 'package:sheetless/storage_helper.dart';
@@ -60,10 +61,30 @@ class _MyHomePageState extends State<MyHomePage> {
return sheets; return sheets;
} }
Future<void> _logOut() async {
// Delete saved jwt
await _storageHelper.writeSecure(SecureStorageKey.jwt, null);
if (!mounted) return; // Widget already removed
Navigator.of(
context,
).pushReplacement(MaterialPageRoute(builder: (_) => LoginPage()));
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar(title: const Text("My Sheets")), appBar: AppBar(
title: const Text("Sheetless"),
actions: [
IconButton(
icon: const Icon(Icons.logout),
tooltip: 'Logout',
onPressed: _logOut,
),
],
),
body: FutureBuilder( body: FutureBuilder(
future: acquireSheets(), future: acquireSheets(),
builder: (BuildContext context, AsyncSnapshot<List<Sheet>> snapshot) { builder: (BuildContext context, AsyncSnapshot<List<Sheet>> snapshot) {

View File

@@ -31,7 +31,7 @@ class StorageHelper {
return secureStorage.read(key: key.name); return secureStorage.read(key: key.name);
} }
Future<void> writeSecure(SecureStorageKey key, String value) { Future<void> writeSecure(SecureStorageKey key, String? value) {
return secureStorage.write(key: key.name, value: value); return secureStorage.write(key: key.name, value: value);
} }