Skip to content

Commit ef72a91

Browse files
committed
2 parents 173b48d + ab081be commit ef72a91

File tree

2 files changed

+122
-26
lines changed

2 files changed

+122
-26
lines changed

README.md

Lines changed: 73 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![Stand With Palestine](https://raw.githubusercontent.com/TheBSD/StandWithPalestine/main/banner-no-action.svg)](https://thebsd.github.io/StandWithPalestine)
22

33

4-
# 📱 Flutter WhatsApp-like Chat App
4+
# 📱 Flutter WhatsApp-like Chat Chat App
55

66
## Overview
77

@@ -14,6 +14,7 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
1414
<body>
1515
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/7c602d05-8f31-4d3c-8d68-c565cedbb167" alt="drawing" style="width:250px;"/>
1616
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/05f671fa-1307-4998-ab9a-0f4c073aae74" alt="drawing" style="width:250px;"/>
17+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/56647ac8-b9fd-41f4-9aa9-e531b6b6607c" alt="drawing" style="width:250px;"/>
1718
</body>
1819
</HTML>
1920

@@ -22,12 +23,13 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
2223
### SignUp using Email & Password Screen
2324
<HTML>
2425
<body>
26+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/6a7407df-504c-41f2-94f2-5668a14e685b" alt="drawing" style="width:250px;"/>
2527
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/1cc7b06d-f7b2-4ea8-8895-faa002588433" alt="drawing" style="width:250px;"/>
2628
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/6898582c-fe9f-4168-acd1-55e15219fdfb" alt="drawing" style="width:250px;"/>
27-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/e12a3e09-384f-4ae7-af0d-159c87be9ec9" alt="drawing" style="width:250px;"/>
2829
<br/>
2930
<br/>
3031
<br/>
32+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/e12a3e09-384f-4ae7-af0d-159c87be9ec9" alt="drawing" style="width:250px;"/>
3133
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/9e1f9c54-a438-4e4e-a3a8-c7f84a63466a" alt="drawing" style="width:250px;"/>
3234
</body>
3335
</HTML>
@@ -38,6 +40,7 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
3840

3941
<HTML>
4042
<body>
43+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/e9154925-34bb-4aa7-86a2-0031c540d444" alt="drawing" style="width:250px;"/>
4144
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/c950c7dc-f50c-4c9c-975e-f7e6abd60ba6" alt="drawing" style="width:250px;"/>
4245
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/472d4063-88a9-488d-9a77-96bb16e5432d" alt="drawing" style="width:250px;"/>
4346
</body>
@@ -49,8 +52,12 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
4952

5053
<HTML>
5154
<body>
55+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/817baebb-6dcc-4acb-a121-2b40bc279acb" alt="drawing" style="width:250px;"/>
5256
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/f611aabb-3a7a-40d3-9913-34d82c49ff14" alt="drawing" style="width:250px;"/>
5357
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/cad93a1c-538f-4e31-b19b-a6ba890ee6e6" alt="drawing" style="width:250px;"/>
58+
<br/>
59+
<br/>
60+
<br/>
5461
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/9bd02d42-86a9-4195-a9b1-7aeaaed92f2e" alt="drawing" style="width:250px;"/>
5562
</body>
5663
</HTML>
@@ -60,6 +67,7 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
6067
### Reset Password Screen
6168
<HTML>
6269
<body>
70+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/066c809b-f7a1-4a02-94b5-48aa9b06f6fc" alt="drawing" style="width:250px;"/>
6371
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/e112a7fe-be28-40a8-b108-8f7d0def4556" alt="drawing" style="width:250px;"/>
6472
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/7d3ff005-98f6-483c-9c5f-b476eda97c18" alt="drawing" style="width:250px;"/>
6573
</body>
@@ -70,8 +78,9 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
7078
### Home Screen
7179
<HTML>
7280
<body>
73-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/9de3efd6-2790-41bd-b055-5bfac3b4b4ff" alt="drawing" style="width:250px;"/>
74-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/78bf351e-817f-462e-97a6-ca1f82d5b472" alt="drawing" style="width:250px;"/>
81+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/728643a7-dae5-4afd-843f-cc52c782cc1b" alt="drawing" style="width:250px;"/>
82+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/fca11d40-e36e-467b-aeb3-fd7c71d2d3d4" alt="drawing" style="width:250px;"/>
83+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/c7730983-4dbf-4f5a-82bf-3d7ebd420958" alt="drawing" style="width:250px;"/>
7584
</body>
7685
</HTML>
7786

@@ -80,8 +89,9 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
8089
### Settings Screen
8190
<HTML>
8291
<body>
83-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/e56de1c9-dabc-473e-8013-cac03ce3f5ee" alt="drawing" style="width:250px;"/>
84-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/41ef5328-6bf6-444f-914d-beb739091d6d" alt="drawing" style="width:250px;"/>
92+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/0903c423-ae48-4e4f-b824-35e66b95859a" alt="drawing" style="width:250px;"/>
93+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/961764ab-aa39-4358-9c49-46642c61a25b" alt="drawing" style="width:250px;"/>
94+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/5c4007b0-e594-468c-94e8-2fb7d46aacb4" alt="drawing" style="width:250px;"/>
8595
</body>
8696
</HTML>
8797

@@ -90,20 +100,28 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
90100
### Chat Screen
91101
<HTML>
92102
<body>
93-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/59048556-34bc-4f75-bc40-19a588518f33" alt="drawing" style="width:250px;"/>
94-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/631b39e8-a739-45c6-81ba-2f50b902b69f" alt="drawing" style="width:250px;"/>
95-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/629b9897-f87b-4bfd-b3fd-1b36637d81ab" alt="drawing" style="width:250px;"/>
103+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/05581d7d-1543-47df-a42b-9c076effdc6f" alt="drawing" style="width:250px;"/>
104+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/3d138ba2-cd1f-4cb4-bb4c-afc56cc72387" alt="drawing" style="width:250px;"/>
105+
<br/>
106+
<br/>
107+
<br/>
108+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/5d4b01b8-8aeb-43ab-935c-0fd57077eb80" alt="drawing" style="width:250px;"/>
109+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/c5917daa-66dc-4ccf-9d04-67384061609d" alt="drawing" style="width:250px;"/>
96110
</body>
97111
</HTML>
98112

99113
---
100114

101-
### Camera Screen
115+
### Select Image
102116
<HTML>
103117
<body>
104-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/eae1a293-cece-4e88-8e59-b27afe9e3c94" alt="drawing" style="width:250px;"/>
105-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/a2fb8799-0ea0-4ea4-8ac0-8447ec6d2553" alt="drawing" style="width:250px;"/>
106-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/dc9194b9-5375-488f-8df4-b2e713c2ff6d" alt="drawing" style="width:250px;"/>
118+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/bcce51d3-1d24-4819-977d-33a939f32dfc" alt="drawing" style="width:250px;"/>
119+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/1b4345a9-0057-42af-b4de-59b2d3b6ef67" alt="drawing" style="width:250px;"/>
120+
<br/>
121+
<br/>
122+
<br/>
123+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/029149ef-bfd5-48ae-8cf7-fb0fd2c8fc92" alt="drawing" style="width:250px;"/>
124+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/9e93edda-23f3-47ca-9ed8-bdab22389e0c" alt="drawing" style="width:250px;"/>
107125
</body>
108126
</HTML>
109127

@@ -112,8 +130,9 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
112130
### Local Auth Screen (Fingerprint & FaceID)
113131
<HTML>
114132
<body>
115-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/6616b902-7ac5-4249-83dc-cb54c314d153" alt="drawing" style="width:250px;"/>
116-
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/b5d6f62c-12c9-44bf-ab6d-d95a52f340df" alt="drawing" style="width:250px;"/>
133+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/5031ade5-8105-4467-af19-09077cf56091" alt="drawing" style="width:250px;"/>
134+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/9c160fa2-3247-472d-a0e2-709bf87fbad3" alt="drawing" style="width:250px;"/>
135+
<img src="https://github.com/MoazSayed7/Flutter-Chat-App-Firebase-Authentication-Messaging-WhatsApp-Like/assets/75115429/0a3a969c-c2f7-455e-8ed7-f8b374eb05f2" alt="drawing" style="width:250px;"/>
117136
</body>
118137
</HTML>
119138

@@ -155,38 +174,47 @@ This Flutter project is a chat application inspired by WhatsApp. The app feature
155174

156175
- **Security:**
157176
- App lock feature using fingerprint or face ID with `local_auth` package.
158-
- Fingerprint/face ID attempts limited to prevent unauthorized access.
177+
- Fingerprint/face ID attempts are limited to prevent unauthorized access.
159178
- Lock screen request after multiple unsuccessful attempts.
160179

161180
- **Settings:**
162181
- Accessible from the home page's three dots menu.
163182
- Option to enable/disable app lock with a Cupertino switch.
183+
- Option to Change App Language
164184

165185
- **Camera Integration:**
166186
- Capture high-quality photos using the device's camera.
167187
- Save pictures on the device.
188+
- Send photos
168189

169190
## Dependencies
170191

171192
- `awesome_dialog`: Provides versatile dialogs for various use cases.
172-
- `camera`: Enables camera interaction and image capture.
193+
- `cached_network_image`: Library to load and cache network images.
173194
- `chat_bubbles`: Simplifies chat message UI creation.
174195
- `cloud_firestore`: Integrates with Firebase Firestore for data storage and retrieval.
175196
- `dio`: HTTP client for making API requests.
176-
- `eva_icons_flutter`: Provides additional icons beyond the core Flutter icons.
197+
- `easy_localization`: Internationalizing and localization App.
177198
- `firebase_auth`: Manages user authentication with Firebase.
178199
- `firebase_core`: Initializes the Firebase connection.
179200
- `firebase_messaging`: Enables FCM for notifications.
201+
- `firebase_storage`: Plugin for Firebase Cloud Storage.
180202
- `flutter_local_notifications`: Presents local notifications when the app is in the foreground.
203+
- `flutter_native_splash`: Customize the App's default white native splash screen with background color and splash image.
181204
- `flutter_offline`: Handles offline connectivity scenarios.
182205
- `flutter_screenutil`: Adapts UI elements to different screen sizes.
206+
- `flutter_speed_dial`: Plugin to implement a beautiful and dynamic Material Design Speed Dial with labels.
207+
- `flutter_svg`: An SVG rendering and widget library.
183208
- `gap`: Simplifies spacing management in layouts.
184209
- `google_sign_in`: Facilitates Google Sign-In authentication.
185210
- `googleapis_auth`: Obtain Access credentials for Google services using OAuth 2.0.
211+
- `image_picker`: Plugin for selecting images from the image library, and taking new pictures with the camera.
186212
- `intl`: Internationalization and localization support.
187213
- `local_auth`: Enables fingerprint and Face ID authentication.
188214
- `logger`: Assists with logging messages for debugging.
189215
- `shared_preferences`: Stores simple data locally on the device.
216+
- `pretty_dio_logger`: A Dio interceptor that logs network calls in a pretty, easy-to-read format.
217+
- `modal_bottom_sheet`: Create awesome and powerful modal bottom sheets.
190218
- `lottie`: Render After Effects animations natively on Flutter.
191219
- `package_info_plus`: Querying information about the application package.
192220
- `pub_semver`: in this App to compare versions.
@@ -224,31 +252,50 @@ I have made custom modifications to the `chat_bubbles` package
224252

225253
#### Implementation Details
226254

227-
I have already uploaded the edited `bubble_special_three.dart` file to my project. You can find it in the following path:
255+
I have already uploaded the edited files to my project. You can find it in the following path:
228256

229257
```
258+
removeable/bubble_normal_image.dart
230259
removeable/bubble_special_three.dart
260+
removeable/date_chip.dart
261+
removeable/message_bar.dart
231262
```
232263

233264
#### How to Apply Changes
234265

235-
1. Download the edited `bubble_special_three.dart` file.
266+
1. Download the edited files.
236267

237-
2. Replace the existing `bubble_special_three.dart` file in your Flutter project with the downloaded file.
268+
2. Replace the existing files in your Flutter project with the downloaded files.
238269

239-
- navigate to:
270+
- For `bubble_special_three.dart` and `bubble_normal_image.dart`, navigate to:
271+
```
272+
%LocalAppData%\Pub\Cache\hosted\pub.dev\chat_bubbles-1.5.0\lib\bubbles\
273+
```
274+
275+
- For `date_chip.dart`, navigate to:
276+
```
277+
%LocalAppData%\Pub\Cache\hosted\pub.dev\chat_bubbles-1.5.0\lib\date_chips\
240278
```
241-
%LocalAppData%\Pub\Cache\hosted\pub.dev\chat_bubbles-1.6.0\lib\bubbles\bubble_special_three.dart
279+
280+
- For `message_bar.dart`, navigate to:
281+
```
282+
%LocalAppData%\Pub\Cache\hosted\pub.dev\chat_bubbles-1.5.0\lib\message_bars\
242283
```
243-
- Delete the existing `bubble_special_three.dart` file and replace it with the downloaded file from my repository.
244284
245285
---
246286
247-
7. Update app's launcher icon:
287+
7. Update the app's launcher icon:
288+
248289
```bash
249290
dart run flutter_launcher_icons
250291
```
251-
8. Run the app:
292+
8. Update the app's splash screen:
293+
294+
```bash
295+
dart run flutter_native_splash:create --path=flutter_native_splash.yaml
296+
```
297+
298+
9. Run the app:
252299

253300
```bash
254301
flutter run

removeable/date_chip.dart

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import 'package:chat_bubbles/algo/algo.dart';
2+
import 'package:flutter/material.dart';
3+
4+
///[DateChip] use to show the date breakers on the chat view
5+
///[date] parameter is required
6+
///[color] parameter is optional default color code `8AD3D5`
7+
///
8+
///
9+
class DateChip extends StatelessWidget {
10+
final DateTime date;
11+
final Color color;
12+
final Color dateColor;
13+
14+
///
15+
///
16+
///
17+
const DateChip({
18+
Key? key,
19+
required this.date,
20+
this.color = const Color(0x558AD3D5),
21+
this.dateColor = const Color(0x558AD3D5),
22+
}) : super(key: key);
23+
@override
24+
Widget build(BuildContext context) {
25+
return Center(
26+
child: Padding(
27+
padding: const EdgeInsets.only(
28+
top: 7,
29+
bottom: 7,
30+
),
31+
child: Container(
32+
decoration: BoxDecoration(
33+
borderRadius: BorderRadius.all(Radius.circular(6)),
34+
color: color,
35+
),
36+
child: Padding(
37+
padding: const EdgeInsets.all(5.0),
38+
child: Text(
39+
Algo.dateChipText(date),
40+
style: TextStyle(
41+
color: dateColor,
42+
),
43+
),
44+
),
45+
),
46+
),
47+
);
48+
}
49+
}

0 commit comments

Comments
 (0)