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
576 Understanding How to Configure Google API Key
569 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
579 PHP ssh2_scp_send fails to send files as intended
570 Who developed the "avformat-59.dll" that comes with FFmpeg?
602 GDB gets version error when attempting to debug with the Presense SDK (IDE)
© 2024 OneMinuteCode. All rights reserved.