Flutter twitter clone
Fully functional Twitter clone built in flutter framework using Firebase realtime database and storage
A working Twitter clone built in Flutter using Firebase auth,realtime,firestore database and storage. The project is written primarily in Dart, distributed under the MIT License license, first published in 2019. It has gained significant community traction with 4,234 stars and 1,162 forks on GitHub. Key topics include: firebase-auth, firebase-realtime-database, firebase-storage, flutter, flutter-app.
Fwitter - Twitter clone in flutter

A working Twitter clone built in Flutter using Firebase auth,realtime,firestore database and storage.
<a href="https://play.google.com/store/apps/details?id=com.thealphamerc.flutter_twitter_clone"> <img width="100%" alt="Fwiiter Banner" src="https://user-images.githubusercontent.com/37103237/152671482-885fd940-f4ea-4fb6-8baf-816c17b541d7.png"> </a> <a href="https://github.com/Solido/awesome-flutter#top"> <img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" /> </a>Download App
<a href="https://play.google.com/store/apps/details?id=com.thealphamerc.flutter_twitter_clone"><img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" width="200"></img></a>
Features
- App features is mentioned at project section Click here
- Messaging chat section status can be seen at here
:boom: Fwitter app now uses both firebase realtime and firestore database.:boom:
- In branch firetore Fwitter uses
Firestoredatabase for app. - In branch Master and realtime_db Fwitter uses
Firebase Realtimedatabase for app.
Dependencies
<details> <summary> Click to expand </summary>- intl
- uuid
- http
- share
- provider
- url_launcher
- google_fonts
- image_picker
- firebase_auth
- google_sign_in
- firebase_analytics
- firebase_database
- shared_preferences
- flutter_advanced_networkimage
Screenshots
| Welcome Page | Login Page | Signup Page | Forgot Password Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Home Page Sidebaar | Home Page | Home Page | Home Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Compose Tweet Page | Reply To Tweet | Reply to Tweet | Compose Retweet with comment |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Tweet Detail Page | Tweet Thread | Nested Tweet Thread | Tweet options |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Notification Page | Notification Page | Notification Page | Notification Setting Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Profile Page | Profile Page | Profile Page | Profile Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Select User Page | Chat Page | Chat Users List | Conversation Info Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Search Page | Search Setting Page | Tweet Options - 1 | Tweet Options - 2 |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Setting Page | Account Setting Page | Privacy Setting Page | Privacy Settings Page |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Content Prefrences Page | Display Setting Page | Data Settings Page | Accessibility Settings |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Users who likes Tweet | About Setting Page | Licenses Settings | Settings |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Getting started
- Project setup instructions are given at Wiki section.
Directory Structure
<details> <summary> Click to expand </summary>|-- lib
| |-- helper
| | |-- constant.dart
| | |-- customRoute.dart
| | |-- enum.dart
| | |-- routes.dart
| | |-- theme.dart
| | |-- utility.dart
| | '-- validator.dart
| |-- main.dart
| |-- model
| | |-- chatModel.dart
| | |-- feedModel.dart
| | |-- notificationModel.dart
| | '-- user.dart
| |-- page
| | |-- Auth
| | | |-- forgetPasswordPage.dart
| | | |-- selectAuthMethod.dart
| | | |-- signin.dart
| | | |-- signup.dart
| | | |-- verifyEmail.dart
| | | '-- widget
| | | '-- googleLoginButton.dart
| | |-- common
| | | |-- sidebar.dart
| | | |-- splash.dart
| | | |-- usersListPage.dart
| | | '-- widget
| | | '-- userListWidget.dart
| | |-- feed
| | | |-- composeTweet
| | | | |-- composeTweet.dart
| | | | |-- state
| | | | | '-- composeTweetState.dart
| | | | '-- widget
| | | | |-- composeBottomIconWidget.dart
| | | | |-- composeTweetImage.dart
| | | | '-- widgetView.dart
| | | |-- feedPage.dart
| | | |-- feedPostDetail.dart
| | | '-- imageViewPage.dart
| | |-- homePage.dart
| | |-- message
| | | |-- chatListPage.dart
| | | |-- chatScreenPage.dart
| | | |-- conversationInformation
| | | | '-- conversationInformation.dart
| | | '-- newMessagePage.dart
| | |-- notification
| | | '-- notificationPage.dart
| | |-- profile
| | | |-- EditProfilePage.dart
| | | |-- follow
| | | | |-- followerListPage.dart
| | | | '-- followingListPage.dart
| | | |-- profileImageView.dart
| | | |-- profilePage.dart
| | | '-- widgets
| | | '-- tabPainter.dart
| | |-- search
| | | '-- SearchPage.dart
| | '-- settings
| | |-- accountSettings
| | | |-- about
| | | | '-- aboutTwitter.dart
| | | |-- accessibility
| | | | '-- accessibility.dart
| | | |-- accountSettingsPage.dart
| | | |-- contentPrefrences
| | | | |-- contentPreference.dart
| | | | '-- trends
| | | | '-- trendsPage.dart
| | | |-- dataUsage
| | | | '-- dataUsagePage.dart
| | | |-- displaySettings
| | | | '-- displayAndSoundPage.dart
| | | |-- notifications
| | | | '-- notificationPage.dart
| | | |-- privacyAndSafety
| | | | |-- directMessage
| | | | | '-- directMessage.dart
| | | | '-- privacyAndSafetyPage.dart
| | | '-- proxy
| | | '-- proxyPage.dart
| | |-- settingsAndPrivacyPage.dart
| | '-- widgets
| | |-- headerWidget.dart
| | |-- settingsAppbar.dart
| | '-- settingsRowWidget.dart
| |-- state
| | |-- appState.dart
| | |-- authState.dart
| | |-- chats
| | | '-- chatState.dart
| | |-- feedState.dart
| | |-- notificationState.dart
| | '-- searchState.dart
| '-- widgets
| |-- bottomMenuBar
| | |-- HalfPainter.dart
| | |-- bottomMenuBar.dart
| | '-- tabItem.dart
| |-- customAppBar.dart
| |-- customWidgets.dart
| |-- newWidget
| | |-- customClipper.dart
| | |-- customLoader.dart
| | |-- customProgressbar.dart
| | |-- customUrlText.dart
| | |-- emptyList.dart
| | |-- rippleButton.dart
| | '-- title_text.dart
| '-- tweet
| |-- tweet.dart
| '-- widgets
| |-- parentTweet.dart
| |-- retweetWidget.dart
| |-- tweetBottomSheet.dart
| |-- tweetIconsRow.dart
| |-- tweetImage.dart
| '-- unavailableTweet.dart
|-- pubspec.yaml
</details>
Contributing
If you wish to contribute a change to any of the existing feature or add new in this repo,
please review our contribution guide,
and send a pull request. I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request.
Created & Maintained By
Sonu Sharma (Twitter) (Youtube) (Insta) (Dev.to)
If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of :coffee:
You can also nominate me for Github Star developer program
https://stars.github.com/nominate
Contributors
Visitors Count
<img align="left" src = "https://profile-counter.glitch.me/flutter_twitter_clone/count.svg" alt ="Loading">Contributors
Showing top 8 contributors by commit count.












































