I was previously using shared_preferences as my method of maintaining user login status. However, I've recently learned of flutter_secure_storage and the security benefits associated with it and would like to use this approach instead. I've attempted to implement this method myself, however, I doesn't seem to work. I keep getting redirected to the Welcome() screen.
flutter_secure_storage: ^4.1.0
secure_storage.dart
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; class SecureStorage { final _storage = FlutterSecureStorage(); Future writeSecureData(String key, String value) async { var writeData = await _storage.write(key: key, value: value); return writeData; } Future readSecureData(String key) async { var readData = await _storage.read(key: key); return readData; } Future deleteSecureData(String key) async{ var deleteData = await _storage.delete(key: key); return deleteData; } }
login.dart
I've only included the relevant line of code here
final SecureStorage secureStorage = SecureStorage(); secureStorage.writeSecureData('email', email);
main.dart
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:podapp/theme/routes.dart'; import 'package:podapp/utils/secure_storage.dart'; import 'package:podapp/views/home.dart'; import 'package:podapp/views/welcome.dart'; // Initialize email String userEmail; // Initalize secure storage for persistent login check final SecureStorage secureStorage = SecureStorage(); Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Check if user email exists in storage secureStorage.readSecureData('email').then((value) { userEmail = value; }); runApp(MyApp(userEmail)); } class MyApp extends StatelessWidget { // String passed from future main() MyApp(this.userEmail); final String userEmail; @override Widget build(BuildContext context) { return MaterialApp( [...] // If the email in local storage matches keep user logged in // This is based on SharedPreferences home: userEmail == null ? Welcome() : Home()); } }
没有评论:
发表评论