In the main dart file I am trying to initialise the login page is username is not saved and initialise the dashboard page if username is saved through flutter secure storage
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_get_storage/services/Storage.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import './login_page.dart';
import './dashboard_page.dart';
void main() async {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage());
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
String? finalName;
class _HomePageState extends State<HomePage> {
final userdata = GetStorage();
final SecureStorage secureStorage = SecureStorage();
@override
void initState() {
// TODO: implement initState
secureStorage.readSecureData('username').then((value) {
finalName = value;
});
Future.delayed(Duration.zero, () {
checkIfLogged(finalName);
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: SafeArea(
child: Center(
child: CircularProgressIndicator(),
),
),
),
),
);
}
dynamic checkIfLogged(value) {
if (finalName != null) {
Get.offAll(() => DashBoard());
} else {
Get.offAll(LoginPage());
}
}
}
Storage .dart file... This is where the Class of flutter secure storage is placed
```
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_page file
import 'package:flutter/material.dart';
import 'package:flutter_get_storage/services/Storage.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:get_storage/get_storage.dart';
import 'package:get/get.dart';
import './dashboard_page.dart';
class LoginPage extends StatelessWidget {
final username_controller = TextEditingController();
final password_controller = TextEditingController();
final userdata = GetStorage();
final SecureStorage secureStorage = SecureStorage();
// final storage = FlutterSecureStorage();
final ButtonStyle style =
ElevatedButton.styleFrom(textStyle: const TextStyle(fontSize: 20));
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(" Home Page"),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"Login Form",
style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
),
Padding(
padding: const EdgeInsets.all(15.0),
child: TextField(
controller: username_controller,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'username',
),
),
),
Padding(
padding: const EdgeInsets.all(15.0),
child: TextField(
controller: password_controller,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Password',
),
),
),
ElevatedButton(
style: style,
onPressed: () async {
String username = username_controller.text;
String password = password_controller.text;
if (username != '' && password != '') {
print('Successfull');
secureStorage.writeSecureData('username', username);
secureStorage.readSecureData('username');
Get.offAll(() => DashBoard());
} else {
Get.snackbar("Error", "Please Enter Username & Password",
snackPosition: SnackPosition.BOTTOM);
}
},
child: Text("Log-In"),
)
],
),
),
);
}
}
Dashboard_page file
import 'package:flutter/material.dart';
import 'package:flutter_get_storage/main.dart';
import 'package:flutter_get_storage/services/Storage.dart';
import 'package:get_storage/get_storage.dart';
import 'package:get/get.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import './login_page.dart';
class DashBoard extends StatelessWidget {
final userdata = GetStorage();
final SecureStorage secureStorage = SecureStorage();
@override
Widget build(BuildContext context) {
String? finalName;
secureStorage.readSecureData('username').then((value) {
finalName = value;
});
String? abc = 'abc';
return Scaffold(
appBar: AppBar(
title: Text(" Shared Preferences"),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"USER DATA",
style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
),
Text(
//"name : ${secureStorage.readSecureData('username')}",
"name : ${finalName}, ${abc}",
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
),
ElevatedButton(
onPressed: () async {
userdata.write('isLogged', false);
secureStorage.deleteSecureData('username');
//await storage.delete(key: 'username');
Get.offAll(() => LoginPage());
},
child: Text("LOGOUT"),
)
],
),
),
);
}
}
I was using the flutter_secure_storage package for keeping my user Logged In, but I cannot keep user logged In and also I cannot keep the information of user as I want in my dashboard page.