Skip to content

Commit

Permalink
Merge pull request #4 from SimCoderYoutube/lesson_4/creating_tweets_w…
Browse files Browse the repository at this point in the history
…ith_firebase_firestore

[Add] post to tweet to firestore
  • Loading branch information
SimCoderYoutube committed Jan 6, 2021
2 parents e8ca559 + 076442a commit c435e76
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 2 deletions.
1 change: 0 additions & 1 deletion frontend/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:twitter/models/user.dart';
import 'package:twitter/screens/auth/signup.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:twitter/screens/wrapper.dart';
import 'package:twitter/services/auth.dart';
Expand Down
5 changes: 5 additions & 0 deletions frontend/lib/screens/main/home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ class Home extends StatelessWidget {
})
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.pushNamed(context, '/add');
},
child: Icon(Icons.add)),
);
}
}
39 changes: 39 additions & 0 deletions frontend/lib/screens/main/posts/add.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import 'package:flutter/material.dart';
import 'package:twitter/services/posts.dart';

class Add extends StatefulWidget {
Add({Key key}) : super(key: key);

@override
_AddState createState() => _AddState();
}

class _AddState extends State<Add> {
final PostService _postService = PostService();
String text = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Tweet'),
actions: <Widget>[
FlatButton(
textColor: Colors.white,
onPressed: () async {
_postService.savePost(text);
Navigator.pop(context);
},
child: Text('Tweet'))
],
),
body: Container(
padding: EdgeInsets.symmetric(vertical: 20, horizontal: 10),
child: new Form(child: TextFormField(
onChanged: (val) {
setState(() {
text = val;
});
},
))));
}
}
5 changes: 4 additions & 1 deletion frontend/lib/screens/wrapper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import 'package:twitter/models/user.dart';
import 'package:twitter/screens/auth/signup.dart';
import 'package:twitter/screens/main/home.dart';
import 'package:twitter/screens/main/posts/add.dart';

class Wrapper extends StatelessWidget {
const Wrapper({Key key}) : super(key: key);
Expand All @@ -18,6 +19,8 @@ class Wrapper extends StatelessWidget {
}

//show main system routes
return Home();
return MaterialApp(
initialRoute: '/',
routes: {'/': (context) => Home(), '/add': (context) => Add()});
}
}
12 changes: 12 additions & 0 deletions frontend/lib/services/posts.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';

class PostService {
Future savePost(text) async {
await FirebaseFirestore.instance.collection("posts").add({
'text': text,
'creator': FirebaseAuth.instance.currentUser.uid,
'timestamp': FieldValue.serverTimestamp()
});
}
}
21 changes: 21 additions & 0 deletions frontend/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-nullsafety.1"
cloud_firestore:
dependency: "direct main"
description:
name: cloud_firestore
url: "https://pub.dartlang.org"
source: hosted
version: "0.14.4"
cloud_firestore_platform_interface:
dependency: transitive
description:
name: cloud_firestore_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
cloud_firestore_web:
dependency: transitive
description:
name: cloud_firestore_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.1+2"
collection:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions frontend/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ dependencies:
provider: ^4.3.2+3
firebase_core: "0.5.3"
firebase_auth: "^0.18.4"
cloud_firestore: ^0.14.4


# The following adds the Cupertino Icons font to your application.
Expand Down

0 comments on commit c435e76

Please sign in to comment.