Skip to content

Instantly share code, notes, and snippets.

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>[YOUR_REVERSED_CLIENT_ID]</string>
</array>
</dict>
GoogleSignInAccount googleUser = await googleSignIn.signIn();
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
FirebaseUser firebaseUser = (await firebaseAuth.signInWithCredential(credential)).user;
if (firebaseUser != null) {
// Check is already sign up
final QuerySnapshot result =
await Firestore.instance.collection('users').where('id', isEqualTo: firebaseUser.uid).getDocuments();
final List < DocumentSnapshot > documents = result.documents;
if (documents.length == 0) {
// Update data to server if new user
Firestore.instance.collection('users').document(firebaseUser.uid).setData(
{ 'nickname': firebaseUser.displayName, 'photoUrl': firebaseUser.photoUrl, 'id': firebaseUser.uid });
}
SharedPreferences prefs;
prefs = await SharedPreferences.getInstance();
id = prefs.getString('id') ?? '';
nickname = prefs.getString('nickname') ?? '';
aboutMe = prefs.getString('aboutMe') ?? '';
photoUrl = prefs.getString('photoUrl') ?? '';
Future uploadFile() async {
String fileName = id;
StorageReference reference = FirebaseStorage.instance.ref().child(fileName);
StorageUploadTask uploadTask = reference.putFile(avatarImageFile);
StorageTaskSnapshot storageTaskSnapshot;
uploadTask.onComplete.then((value) {
if (value.error == null) {
storageTaskSnapshot = value;
storageTaskSnapshot.ref.getDownloadURL().then((downloadUrl) {
photoUrl = downloadUrl;
Container(
child: StreamBuilder(
stream: Firestore.instance.collection('users').limit(_limit).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(themeColor),
),
);
Future < Null > handleSignOut() async {
this.setState(() {
isLoading = true;
});
await FirebaseAuth.instance.signOut();
await googleSignIn.disconnect();
await googleSignIn.signOut();
this.setState(() {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
this.widget.arguments.peerNickname,
style: TextStyle(color: ColorConstants.primaryColor),
),
centerTitle: true,
),
void _onBackPress() {
_chatProvider.updateDataFirestore(
FirestoreConstants.pathUserCollection,
_currentUserId,
{FirestoreConstants.chattingWith: null},
);
Navigator.pop(context);
}
void _getSticker() {
StreamBuilder(
stream: Firestore.instance
.collection('messages')
.document(groupChatId)
.collection(groupChatId)
.orderBy('timestamp', descending: true)
.limit(_limit)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {