Google Login을 하기위헤서는 일단.   firebase 셋팅이 필요합니다.


셋팅이 안되신분은 참고  =>   http://jdj610.tistory.com/162



1. flutter프로젝트에 package를 등록합니다.  pubspec.yaml 


dependencies:
flutter:
sdk: flutter

# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.0
google_sign_in: "^3.0.0"
firebase_auth: "^0.5.3"


2.   main.dart에 넣어주세요


import 'dart:async';
import 'package:flutter/material.dart';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn= new GoogleSignIn();

GoogleSignIn _googleSignIn = new GoogleSignIn(
scopes: <String>[
'email',
'https://www.googleapis.com/auth/contacts.readonly',
],
);

void main() {
runApp(
new MaterialApp(
title: 'Google Sign In',
home: new SignInDemo(),
),
);
}

class SignInDemo extends StatefulWidget {
@override
_SignInDemoState createState() => new _SignInDemoState();
}

class _SignInDemoState extends State<SignInDemo> {

String _user_text = null;

Future<String> _testSignInAnonymously() async {
final FirebaseUser user = await _auth.signInAnonymously();
assert(user != null);
assert(user.isAnonymous);
assert(!user.isEmailVerified);
assert(await user.getIdToken() != null);

assert(user.providerData.length == 1);
assert(user.providerData[0].providerId == 'firebase');
assert(user.providerData[0].uid != null);
assert(user.providerData[0].displayName == null);
assert(user.providerData[0].photoUrl == null);
assert(user.providerData[0].email == null);
final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
print(currentUser.uid);
setState(() { _user_text=currentUser.uid; });


return 'signInAnonymously succeeded: $user';
}

Future<String> _testSignInWithGoogle() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final FirebaseUser user = await _auth.signInWithGoogle(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
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);
print(currentUser.uid);
setState(() { _user_text=currentUser.uid; });
return 'signInWithGoogle succeeded: $user';
}

Future<Null> _handleSignOut() async {
await FirebaseAuth.channel.invokeMethod("signOut");
final FirebaseUser currentUser = await _auth.currentUser();
setState(() { _user_text=currentUser.uid; });
}

Future<Null> get_uid() async{
final FirebaseUser currentUser = await _auth.currentUser();
print(currentUser);
setState(() { _user_text=currentUser.uid; });
}

@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
child: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
child: new Text("Sign Google "),
color: Colors.redAccent,
onPressed: _testSignInWithGoogle,
),
new RaisedButton(
child: new Text("Sign Anonymously"),
color: Colors.blueAccent,
onPressed:_testSignInAnonymously,
),
new RaisedButton(
child: new Text("SignOut"),
color: Colors.orangeAccent,
onPressed: _handleSignOut,
)
],
),
_user_text == null ? new Text("Null"):new Text(_user_text),
],
)

),
),
);
}
}



그리고 실행하면 됩니다.



,