Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:flutter/material.dart';
- import 'package:myapp/HomePage.dart';
- import 'package:firebase_auth/firebase_auth.dart';
- import 'package:google_sign_in/google_sign_in.dart';
- import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';
- import 'HomePage.dart';
- final FirebaseAuth _auth = FirebaseAuth.instance;
- final GoogleSignIn _googleSignIn = new GoogleSignIn();
- class UserDetails {
- final String providerId;
- final String uid;
- final String displayName;
- final String photoUrl;
- final String email;
- final bool isAnonymous;
- final bool isEmailVerified;
- final List<UserInfoDetails> providerData;
- UserDetails(this.providerId, this.uid, this.displayName, this.photoUrl,
- this.email, this.isAnonymous, this.isEmailVerified, this.providerData);
- }
- class UserInfoDetails {
- UserInfoDetails(
- this.providerId, this.displayName, this.email, this.photoUrl, this.uid);
- /// The provider identifier.
- final String providerId;
- /// The provider’s user ID for the user.
- final String uid;
- /// The name of the user.
- final String displayName;
- /// The URL of the user’s profile photo.
- final String photoUrl;
- /// The user’s email address.
- final String email;
- }
- class LoginPage extends StatefulWidget {
- static String tag = 'login-page';
- @override
- _LoginPageState createState() => new _LoginPageState();
- }
- class _LoginPageState extends State<LoginPage> {
- Future<FirebaseUser> _signIn() async {
- final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
- final GoogleSignInAuthentication googleAuth =
- await googleUser.authentication;
- final FirebaseUser user = await FirebaseAuth.instance.signInWithGoogle(
- idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);
- assert(user.email != null);
- assert(user.displayName != null);
- assert(!user.isAnonymous);
- assert(await user.getIdToken() != null);
- final FirebaseUser currentUser = await _auth.currentUser();
- assert(user.uid == currentUser.uid);
- UserInfoDetails userInfo = new UserInfoDetails(
- user.providerId, user.displayName, user.email, user.photoUrl, user.uid);
- List<UserInfoDetails> providerData = new List<UserInfoDetails>();
- providerData.add(userInfo);
- UserDetails details = new UserDetails(
- user.providerId,
- user.uid,
- user.displayName,
- user.photoUrl,
- user.email,
- user.isAnonymous,
- user.isEmailVerified,
- providerData);
- print("signed in : ${user.displayName}");
- Navigator.pushReplacement(
- context,
- new MaterialPageRoute(
- builder: (context) => new HomePage(detailsUser: details),
- ),
- );
- return user;
- }
- // other codes....
- }
Add Comment
Please, Sign In to add comment