Everything is working fine but when I login successfully it shows that the exact user is logged in and after that if I navigate to other pages from Navbar and return back to the login page it shows Login page instead of Dashboard page
// ignore_for_file: prefer_const_constructors, use_key_in_widget_constructors, use_build_context_synchronously, library_private_types_in_public_api, depend_on_referenced_packages
import 'package:flutter_session_manager/flutter_session_manager.dart';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
WidgetsFlutterBinding.ensureInitialized();
dynamic token = SessionManager().get("token");
runApp(MaterialApp(home: token != '' ? DashboardPage() : ProfilePage()));
}
class ProfilePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Profile(),
);
}
}
class Profile extends StatefulWidget {
@override
_ProfileLogin createState() => _ProfileLogin();
}
class _ProfileLogin extends State<Profile> {
TextEditingController user = TextEditingController();
TextEditingController pass = TextEditingController();
bool isLoggedIn = false;
Future login() async {
var url = Uri.https("path_to_my_server", '/login_user.php');
var response = await http.post(url, body: {
"username": user.text,
"loginpassword": pass.text,
});
var data = json.decode(response.body); // The response is already a string
if (data.toString() == "Success") {
await SessionManager().set('token', user.text);
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Login Success")));
setState(() {
isLoggedIn = true;
});
} else {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Wrong Credentials!")));
}
}
bool isPasswordVisible = false;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Image(
image: AssetImage('assets/logo.png'),
fit: BoxFit.contain,
height: 50,
),
centerTitle: true,
backgroundColor: Colors.white,
),
body: isLoggedIn ? DashboardPage() : buildLoginPage(),
);
}
Widget buildLoginPage() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 50.0),
child: Center(
child: Text(
"Welcome back",
style: Theme.of(context).textTheme.headlineLarge,
),
),
),
SizedBox(height: 50),
Padding(
padding: const EdgeInsets.only(left: 15.0, right: 15.0, top: 15, bottom: 0),
child: TextField(
controller: user,
decoration: InputDecoration(
prefixIconConstraints: const BoxConstraints(minWidth: 45),
prefixIcon: const Icon(
Icons.person,
color: Colors.black,
size: 22,
),
hintText: 'Enter Username',
border: OutlineInputBorder(),
labelText: 'Username',
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.black, width: 1.0),
)),
),
),
Padding(
padding: const EdgeInsets.only(left: 15.0, right: 15.0, top: 15, bottom: 0),
child: TextField(
controller: pass,
obscureText: isPasswordVisible ? false : true,
decoration: InputDecoration(
prefixIconConstraints: const BoxConstraints(minWidth: 45),
prefixIcon: const Icon(
Icons.lock,
color: Colors.black,
size: 22,
),
suffixIconConstraints: const BoxConstraints(minWidth: 45, maxWidth: 46),
suffixIcon: GestureDetector(
onTap: () {
setState(() {
isPasswordVisible = !isPasswordVisible;
});
},
child: Icon(
isPasswordVisible ? Icons.visibility : Icons.visibility_off,
color: Colors.black,
size: 22,
),
),
border: OutlineInputBorder(),
labelText: 'Password',
hintText: 'Enter your password',
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.black, width: 1.0),
))),
),
SizedBox(
height: 30,
),
GestureDetector(
onTap: () {
login();
},
child: Container(
height: 50,
width: 250,
margin: const EdgeInsets.symmetric(horizontal: 30),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(10)),
child: Text(
'Login',
style: TextStyle(color: Colors.white, fontSize: 25),
),
),
),
SizedBox(
height: 130,
),
],
),
);
}
}
class DashboardPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
centerTitle: true,
backgroundColor: Colors.white,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Your Application Process Will Appear Here'),
FutureBuilder(
future: SessionManager().get("token"),
builder: (context, snapshot) {
return Text(snapshot.hasData ? snapshot.data : 'Loading...');
},
),
],
),
),
);
}
}
This is the Navbar, when I navigate through Home and Get Started Pages and return back to Profile page (which is login page) it shows Login Screen instead of Dashboard:
This is my Dashboard Screen after successful login:

