Skip to content

Commit

Permalink
Firestore loading is working
Browse files Browse the repository at this point in the history
  • Loading branch information
RichardeJiang committed Jul 5, 2021
1 parent 552c111 commit c9487b9
Show file tree
Hide file tree
Showing 5 changed files with 130 additions and 30 deletions.
25 changes: 0 additions & 25 deletions lib/database.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,6 @@ final CollectionReference _mainCollection = _firestore.collection('Messages');
class Database {
static String? userUid;

static Future<void> addItem({
required String title,
required String description,
}) async {
DocumentReference documentReferencer =
_mainCollection.doc(userUid).collection('items').doc();

Map<String, dynamic> data = <String, dynamic>{
"title": title,
"description": description,
};

await documentReferencer
.set(data)
.whenComplete(() => print("Note item added to the database"))
.catchError((e) => print(e));
}

static Future<void> addNewMail({
required String mailSender,
required String mailContent
Expand Down Expand Up @@ -60,13 +42,6 @@ class Database {
.catchError((e) => print(e));
}

static Stream<QuerySnapshot> readItems() {
CollectionReference notesItemCollection =
_mainCollection.doc(userUid).collection('items');

return notesItemCollection.snapshots();
}

static Stream<QuerySnapshot> readAllMails() {
return _mainCollection.snapshots();
}
Expand Down
128 changes: 128 additions & 0 deletions lib/group_chat_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

import 'database.dart';

class GroupChat extends StatelessWidget {

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'家书:',
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
),
centerTitle: true,
),
body: ChatScreen(),
);
}
}

class ChatScreen extends StatelessWidget {
const ChatScreen();

@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Database.readAllMails(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
} else if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Colors.orange,
),
),
);
}
return new ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data() as Map<String,
dynamic>;
String name = data['name'];
String mail = data['message'];
return buildItem(name, mail, "", context);
}).toList(),
padding: EdgeInsets.all(10.0),
physics: BouncingScrollPhysics(),
);
}
);
}

Widget buildItem(
String teacherName,
String teacherMessage,
String teacherAvatar,
BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
// Avatar
Container(
width: 36,
height: 36,
alignment: Alignment.center,
decoration: new BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/rodion-kutsaev.jpeg'),
fit: BoxFit.fill
),
borderRadius: BorderRadius.all(
Radius.circular(18.0),
),
),
//padding: EdgeInsets.only(top: 50),
margin: EdgeInsets.only(top: 5.0),
),

// Text message
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
// Name
Container(
child: Text(
teacherName,
style: TextStyle(color: Colors.grey, fontSize: 10.0, fontStyle: FontStyle.italic),
),
padding: EdgeInsets.only(left: 10.0),
),

SizedBox(height: 1),

// Letter
Padding(
padding: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 5.0),
child: SizedBox(
width: MediaQuery.of(context).size.width * 0.6,
child: Card(
elevation: 8,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: Padding(
padding: EdgeInsets.all(10),
child: Text(
teacherMessage,
),
),
),
),
),
],
),
],
),

SizedBox(height: 7),
],
),
);
}
}
2 changes: 0 additions & 2 deletions lib/mail_view.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:from_android/database.dart';

Expand Down
2 changes: 0 additions & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import 'package:from_android/home_page.dart';
import 'package:flutter/material.dart';

import 'chat_view.dart';

void main() => runApp(new MainApp());

class MainApp extends StatelessWidget {
Expand Down
3 changes: 2 additions & 1 deletion lib/sliding_cards.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'dart:math' as math;
import 'package:from_android/staggered_grid_view.dart';

import 'chat_view.dart';
import 'group_chat_view.dart';

class SlidingCardsView extends StatefulWidget {
@override
Expand Down Expand Up @@ -185,7 +186,7 @@ class CardContent extends StatelessWidget {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Chat()));
builder: (context) => GroupChat()));
}
},
),
Expand Down

0 comments on commit c9487b9

Please sign in to comment.