Guest User

Untitled

a guest
Jan 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. import 'dart:async';
  2.  
  3. import 'package:flutter/material.dart';
  4. import 'package:myapp/HomePage.dart';
  5. import 'package:firebase_auth/firebase_auth.dart';
  6. import 'package:google_sign_in/google_sign_in.dart';
  7. import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';
  8. import 'HomePage.dart';
  9.  
  10. final FirebaseAuth _auth = FirebaseAuth.instance;
  11. final GoogleSignIn _googleSignIn = new GoogleSignIn();
  12.  
  13. class UserDetails {
  14. final String providerId;
  15.  
  16. final String uid;
  17.  
  18. final String displayName;
  19.  
  20. final String photoUrl;
  21.  
  22. final String email;
  23.  
  24. final bool isAnonymous;
  25.  
  26. final bool isEmailVerified;
  27.  
  28. final List<UserInfoDetails> providerData;
  29.  
  30. UserDetails(this.providerId, this.uid, this.displayName, this.photoUrl,
  31. this.email, this.isAnonymous, this.isEmailVerified, this.providerData);
  32. }
  33.  
  34. class UserInfoDetails {
  35. UserInfoDetails(
  36. this.providerId, this.displayName, this.email, this.photoUrl, this.uid);
  37.  
  38. /// The provider identifier.
  39. final String providerId;
  40.  
  41. /// The provider’s user ID for the user.
  42. final String uid;
  43.  
  44. /// The name of the user.
  45. final String displayName;
  46.  
  47. /// The URL of the user’s profile photo.
  48. final String photoUrl;
  49.  
  50. /// The user’s email address.
  51. final String email;
  52. }
  53.  
  54. class LoginPage extends StatefulWidget {
  55. static String tag = 'login-page';
  56. @override
  57. _LoginPageState createState() => new _LoginPageState();
  58. }
  59.  
  60. class _LoginPageState extends State<LoginPage> {
  61. Future<FirebaseUser> _signIn() async {
  62. final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  63. final GoogleSignInAuthentication googleAuth =
  64. await googleUser.authentication;
  65.  
  66. final FirebaseUser user = await FirebaseAuth.instance.signInWithGoogle(
  67. idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);
  68.  
  69. assert(user.email != null);
  70. assert(user.displayName != null);
  71. assert(!user.isAnonymous);
  72. assert(await user.getIdToken() != null);
  73.  
  74. final FirebaseUser currentUser = await _auth.currentUser();
  75. assert(user.uid == currentUser.uid);
  76.  
  77. UserInfoDetails userInfo = new UserInfoDetails(
  78. user.providerId, user.displayName, user.email, user.photoUrl, user.uid);
  79.  
  80. List<UserInfoDetails> providerData = new List<UserInfoDetails>();
  81. providerData.add(userInfo);
  82.  
  83. UserDetails details = new UserDetails(
  84. user.providerId,
  85. user.uid,
  86. user.displayName,
  87. user.photoUrl,
  88. user.email,
  89. user.isAnonymous,
  90. user.isEmailVerified,
  91. providerData);
  92.  
  93. print("signed in : ${user.displayName}");
  94. Navigator.pushReplacement(
  95. context,
  96. new MaterialPageRoute(
  97. builder: (context) => new HomePage(detailsUser: details),
  98. ),
  99. );
  100. return user;
  101. }
  102. // other codes....
  103. }
Add Comment
Please, Sign In to add comment