'I am not able to go to landing page after google sign in in flutter
I am trying to implement a google sign for my application using firebase. when i press on google sign in button a pop up window appear to select the mail id when i press on my mail id i am not redirecting to LoggedInWidgit() page. I am not getting where my code is not working
home_page.dart
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:note_app_demo/screens/login_page.dart';
import 'package:note_app_demo/utilities/logged_in_widgit.dart';
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => Scaffold(
body: StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
} else if (snapshot.hasData) {
return LogedInWidgit();
} else if (snapshot.hasError) {
return Center(
child: Text('Something went Wrong!'),
);
} else {
return LOGIN_PAGE();
}
},
),
);
}
logged_in_widgit.dart
import 'package:flutter/material.dart';
import 'package:note_app_demo/utilities/scaffold.dart';
import 'package:firebase_auth/firebase_auth.dart';
class LogedInWidgit extends StatelessWidget {
const LogedInWidgit({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final user = FirebaseAuth.instance.currentUser!;
return Scaffold(
appBar: AppBar(
title: Text('Logged In'),
centerTitle: true,
actions: [
TextButton(
onPressed: () {},
child: Text('Logout'),
)
],
),
body: Container(
alignment: Alignment.center,
color: Colors.blueGrey.shade900,
child: Column(
children: [
Text(
'Profile',
style: TextStyle(fontSize: 24),
),
SizedBox(
height: 32,
),
CircleAvatar(
radius: 40,
backgroundImage: NetworkImage(user.photoURL!),
),
SizedBox(
height: 8,
),
Text(
'Name: ' + user.displayName!,
style: TextStyle(color: Colors.white, fontSize: 16),
),
SizedBox(
height: 8,
)
],
),
),
);
}
}
main.dart
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:note_app_demo/provider/google_sign_in.dart';
import 'package:note_app_demo/screens/landing_page.dart';
import 'package:flutter/services.dart';
import 'package:note_app_demo/screens/login_page.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:provider/provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => ChangeNotifierProvider(
create: (context) => GoogleSignInProvider(),
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Studiac',
home: LOGIN_PAGE(),
),
);
}
login_page.dart
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:note_app_demo/provider/google_sign_in.dart';
import 'package:note_app_demo/screens/landing_page.dart';
import 'package:note_app_demo/button.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
class LOGIN_PAGE extends StatelessWidget {
const LOGIN_PAGE({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(10.0),
child: ElevatedButton.icon(
icon: FaIcon(
Icons.email,
color: Colors.blue,
),
label: Text('Sign Up with Email'),
onPressed: () {},
style: ElevatedButton.styleFrom(
primary: Colors.tealAccent,
onPrimary: Colors.black,
minimumSize: Size(double.infinity, 50),
),
),
),
Padding(
padding: const EdgeInsets.all(10.0),
child: ElevatedButton.icon(
icon: FaIcon(
FontAwesomeIcons.google,
color: Colors.red,
),
label: Text('Sign Up with Google'),
onPressed: () {
final provider = Provider.of<GoogleSignInProvider>(context,
listen: false);
provider.googleLogin();
},
style: ElevatedButton.styleFrom(
primary: Colors.tealAccent,
onPrimary: Colors.black,
minimumSize: Size(double.infinity, 50),
),
),
),
],
),
),
),
);
}
}
google_sign_in.dart
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:firebase_auth/firebase_auth.dart';
class GoogleSignInProvider extends ChangeNotifier {
final googleSignIn = GoogleSignIn();
GoogleSignInAccount? _user;
//getter to get google sign in
GoogleSignInAccount get user => _user!;
Future googleLogin() async {
try {
final googleUser = await googleSignIn.signIn();
if (googleUser == null) return;
_user = googleUser;
final googleAuth = await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken, idToken: googleAuth.idToken);
await FirebaseAuth.instance.signInWithCredential(credential);
} catch (e) {
print(e.toString());
}
notifyListeners();
}
Future logout() async {
await googleSignIn.disconnect();
FirebaseAuth.instance.signOut();
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
