flutter_course_chat_app_starter
Getting Started
Firebase installations
1- Open Firestore
2- Click create database
3- Choose test mode, then click Next
4 – Choose Cloud Firestore location
5 – Click Enable
Setting up Android
1- Click Click Project Overview
2- Then click the Android symbol
3- Add com.cpeskw.chatapp in the package name field and CPES in the App nickname field
4- Then click Register app
5- Then click Download google-services.json
6- Click Next
7- Click Next again and then Continue to console
8- Then move google-services.json from the download location to your project’s android/app folder
9- Open android/build.gradle
10- Then add the classpath 'com.google.gms:google-services:4.3.10' at the end of the list in the dependencies
11- Open android/app/build.gradle
12- add apply plugin: 'com.google.gms.google-services' after the apply from
Setting up iOS
1- Click Click Project Overview
2- Click Add app
3- Then click the iOS symbol
4- Add com.cpeskw.chatapp in the package name field and CPES in the App nickname field
5- Then click Register app
6- Download GoogleService-info.plist
7- Click Next
8- Click Next again and then Continue to console
9- Move the GoogleService-info.plist file to the ios/Runner folder
10- Then open ios/Runner.xcworkspace in Xcode
11- Add GoogleService-info.plist file to the Runner folder (Make sure you have Copy items if needed checked)
Packages
1- Add these packages inside pubspec.yaml file
firebase_core: ^1.10.6
cloud_firestore: ^3.1.5
2- Replace main method with
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
MessageTile widget
import 'package:flutter/material.dart';
import 'package:timeago/timeago.dart' as timeago;
class MessageTile extends StatelessWidget {
final String email;
final String text;
final DateTime date;
MessageTile({
required this.email,
required this.text,
required this.date,
});
@override
Widget build(BuildContext context) {
return Card(
elevation: 2,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.all(8),
child: Text(
'$text',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
padding: EdgeInsets.all(8),
child: Text(
'$email',
style: TextStyle(
fontSize: 10,
color: Colors.grey,
fontWeight: FontWeight.bold,
),
),
),
Container(
padding: EdgeInsets.all(8),
child: Text(
timeago.format(date),
style: TextStyle(
fontSize: 10,
color: Colors.grey,
fontWeight: FontWeight.bold,
),
),
),
],
),
],
),
);
}
}