0

In my application, I happen to have two types of users, hospital, and patients, both are configured to use the same authentication by firebase. What I would like to know is, how do I load the page for the respective user depending on how they were signed in previously? For example, if a hospital had signed in and not logged out, when they run the app, it should display the hospitals' dashboard and not the patients'. How do I configure this?

letsintegreat
  • 3,328
  • 4
  • 18
  • 39

2 Answers2

0

shared_prefs supports Flutter web. Save a value stating the account type.

See this answer: https://stackoverflow.com/a/59579821/13714686

SharedPreferences prefs = await SharedPreferences.getInstance();
bool isHospital = (prefs.getBool('isHospitalAccount');
if(isHospital == true){
 //hospital navigation 
}
else{
  //patient navigation 
}
Samathingamajig
  • 11,839
  • 3
  • 12
  • 34
August Kimo
  • 1,503
  • 8
  • 17
0

First, you need to check whether the user is logged in or not. For this, you can check through the below code.

class MyApp extends StatelessWidget{

    @override
    Widget build(BuildContext context){
        return FutureBuilder<FirebaseUser>(
            future: FirebaseAuth.instance.currentUser(),
            builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot){
                       if (snapshot.hasData){
                           FirebaseUser user = snapshot.data; // this is your user 

                           /// is because there is a user already logged, So route them to a Screen of Dashboard directly.
                           
                           return MainScreen();
                        }
                         /// other way there is no user logged.
                         return LoginScreen();
             }
          );
    }
}

Now, you need to maintain a list of users in FireStore where the user's metadata like the last login, User Type information will be stored. Using this information you can Route the user accordingly.

Darsh Shah
  • 1,526
  • 1
  • 11
  • 20