Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:firebase_auth/firebase_auth.dart';
- import 'package:flutter/material.dart';
- import 'package:flash_chat/constants.dart';
- import 'package:cloud_firestore/cloud_firestore.dart';
- class ChatScreen extends StatefulWidget {
- static const String id = 'chat';
- @override
- _ChatScreenState createState() => _ChatScreenState();
- }
- class _ChatScreenState extends State<ChatScreen> {
- final _auht = FirebaseAuth.instance;
- User loggedInUser;
- String messageText;
- final _firestore = FirebaseFirestore.instance;
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- getCurrentUser();
- }
- void getCurrentUser() async {
- try {
- final user = await _auht.currentUser;
- if (user != null) {
- loggedInUser = user;
- print(loggedInUser.email);
- }
- } catch (e) {
- print(e);
- }
- }
- // void getMessages() async {
- // final messages = await _firestore.collection('messages').get();
- // for (var message in messages.docs) {
- // print(message.data());
- // }
- // }
- void messagesStream() async {
- await for (var snapshot in _firestore.collection('messages').snapshots()) {
- for (var message in snapshot.docs) {
- print(message.data());
- }
- }
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- leading: null,
- actions: <Widget>[
- IconButton(
- icon: Icon(Icons.close),
- onPressed: () {
- //Implement logout functionality
- // _auht.signOut();
- // Navigator.pop(context);
- messagesStream();
- }),
- ],
- title: Text('⚡️Chat'),
- backgroundColor: Colors.lightBlueAccent,
- ),
- body: SafeArea(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- crossAxisAlignment: CrossAxisAlignment.stretch,
- children: <Widget>[
- StreamBuilder<QuerySnapshot>(
- stream: _firestore.collection('messages').snapshots(),
- builder: (context, snapshot) {
- List<Text> messageWidgets = [];
- if (snapshot.hasData) {
- final messages = snapshot.data.docs;
- for (var message in messages) {
- try {
- final messageText = (message['text']);
- final messageSender = (message['sender']);
- final messageWidget =
- Text('$messageText from $messageSender');
- messageWidgets.add(messageWidget);
- } catch (E) {
- print(E);
- }
- }
- }
- return Column(
- children: messageWidgets,
- );
- },
- ),
- Container(
- decoration: kMessageContainerDecoration,
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: <Widget>[
- Expanded(
- child: TextField(
- onChanged: (value) {
- //Do something with the user input.
- messageText = value;
- },
- decoration: kMessageTextFieldDecoration,
- ),
- ),
- FlatButton(
- onPressed: () {
- //Implement send functionality.
- _firestore.collection('messages').add(
- {'sender': loggedInUser.email, 'text': messageText});
- },
- child: Text(
- 'Send',
- style: kSendButtonTextStyle,
- ),
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement