Currently, I am learning about application development using Flutter+Firebase.
We would like to implement the following features as a consistent login feature:
I did some research in my own way and tried them, but I didn't go to the login page in the first place.
The code I tried is the main code below.
How can we implement these functions as a concrete method?
Also, I am currently implementing features using Firebase's Email and Password, but is this a common way to implement these features even for Google and Facebook logins?
I am a beginner at Flutter, so I would appreciate it if you could let me know.
what you used
class MyApp extensions StatelessWidget{
// This widget is the root of your application.
final UserState user=UserState();
@override
Widget build (BuildContext context) {
return ChangeNotifierProvider<UserState>.value(
value —user,
child —MaterialApp(
// Hide Debug Labels
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwitch:Colors.blue,
visualDensity —VisualDensity.adaptivePlatformDensity,
),
home —LoginPage(),
initialRoute: "/",
routes —<String, WidgetBuilder>{
// " / " : (BuildContext context) = > LoginPage(),
AddRecord.routeName: (BuildContext context) = > AddRecord(),
"/login" : (BuildContext context) = > LoginPage(),
"/home": (BuildContext context) = > PageManager()
},
)
);
}
}
class LoginCheck extensions StatefulWidget {
LoginCheck ({Key}):super(key:key);
@override
_LoginCheckState createState()=>_LoginCheckState();
}
class_LoginCheckState extensions State<LoginCheck>{
@override
void initState() {
super.initState();
checkUser();
// TODO:implementation initState
}
void checkUser()async {
final UserState userState=Provider.of<UserState>(context);
final currentUser=wait FirebaseAuth.instance.currentUser();
print(currentUser);
if(currentUser==null){
Navigator.pushReplacementNamed(context, "/login");
} else {
userState.setUser(currentUser);
Navigator.pushReplacementNamed(context, "/home");
}
}
@override
Widget build (BuildContext context) {
// TODO:implementation build
US>return Scaffold(
body: Center(
child —Container(
child: Text("Loading..."),
),
),
);
}
}
Do you initialize Firebase in the first place?
If you use FirebaseSDK, you must do Firebase.initialize when starting the application
import'package:flutter/material.dart';
// Import the firebase_core plugin
import 'package:firebase_core/firebase_core.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(App());
}
class App extensions StatelessWidget {
// Create the initialization Future outside of `build`:
final Future<FirebaseApp>_initialization=Firebase.initializeApp();
@override
Widget build (BuildContext context) {
US>return FutureBuilder(
// Initialize FlutterFire:
future:_initialization,
builder: (context, snapshot) {
// Check for errors
if(snapshot.hasError){
return SomethingWentWrong(); // Error Page
}
// Once complete, show your application
if(snapshot.connectionState==ConnectionState.done){
// Put the main body of the app here
return MyAwesomeApp();
}
// Otherwise, show something while waiting for initialization to complete
return Loading(); // Progress Indicator
},
);
}
}
https://firebase.flutter.dev/docs/overview
こちらDetails are provided here
Below is an example of a CurrentUser decision
FirebaseAuth.instance
.authStateChanges()
.listen(User user){
if(user==null){
print('User is currently signed out!');
} else{
print('User is signed in!');
}
});
As long as you don't log out, even if you open the app after you close it, it won't transition to the login page
Fi FirebseSDK automatically perpetuates login
© 2025 OneMinuteCode. All rights reserved.