Fwitter - Twitter clone in flutter
![GitHub forks](https://camo.githubusercontent.com/c228f151e58aecf4586af6c6fcae55baeb00df55a89452dda62c500757d1daf4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f546865416c7068616d6572632f666c75747465725f747769747465725f636c6f6e653f7374796c653d736f6369616c)
A working Twitter clone built in Flutter using Firebase auth,realtime,firestore database and storage.
![Open Source Love](https://camo.githubusercontent.com/0cf313ab46098035a587f63ea79c0699f4a9bf5020894a64876e0762548cd79c/68747470733a2f2f6261646765732e66726170736f66742e636f6d2f6f732f76322f6f70656e2d736f757263652e7376673f763d313033)
![](https://camo.githubusercontent.com/bf5c3d9991f2bc80b5500c332c9b00244661511938bb78626a30f06664d495fb/68747470733a2f2f706c61792e676f6f676c652e636f6d2f696e746c2f656e5f75732f6261646765732f7374617469632f696d616765732f6261646765732f656e5f62616467655f7765625f67656e657269632e706e67)
- App features is mentioned at project section Click here
- Messaging chat section status can be seen at here
π₯ Fwitter app now uses both firebase realtime
and firestore
database.:boom:
- In branch firetore Fwitter uses
Firestore
database for app.
- In branch Master and realtime_db Fwitter uses
Firebase Realtime
database for app.
Click to expand
Welcome Page |
Login Page |
Signup Page |
Forgot Password Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Auth/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Auth/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Auth/screenshot_3.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Auth/screenshot_4.jpg?raw=true) |
Home Page Sidebaar |
Home Page |
Home Page |
Home Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Home/screenshot_5.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Home/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Home/screenshot_7.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Home/screenshot_6.jpg?raw=true) |
Compose Tweet Page |
Reply To Tweet |
Reply to Tweet |
Compose Retweet with comment |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/CreateTweet/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/CreateTweet/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/CreateTweet/screenshot_4.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/CreateTweet/screenshot_3.jpg?raw=true) |
Tweet Detail Page |
Tweet Thread |
Nested Tweet Thread |
Tweet options |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_3.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_4.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_2.jpg?raw=true) |
Notification Page |
Notification Page |
Notification Page |
Notification Setting Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Notification/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Notification/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Notification/screenshot_3.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Notification/screenshot_4.jpg?raw=true) |
Profile Page |
Profile Page |
Profile Page |
Profile Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Profile/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Profile/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Profile/screenshot_4.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Profile/screenshot_7.jpg?raw=true) |
Select User Page |
Chat Page |
Chat Users List |
Conversation Info Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Chat/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Chat/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Chat/screenshot_3.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Chat/screenshot_4.jpg?raw=true) |
Search Page |
Search Setting Page |
Tweet Options - 1 |
Tweet Options - 2 |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Search/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Search/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_5.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_6.jpg?raw=true) |
Setting Page |
Account Setting Page |
Privacy Setting Page |
Privacy Settings Page |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_1.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_2.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_4.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_3.jpg?raw=true) |
Content Prefrences Page |
Display Setting Page |
Data Settings Page |
Accessibility Settings |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_5.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_6.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_7.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_8.jpg?raw=true) |
Users who likes Tweet |
About Setting Page |
Licenses Settings |
Settings |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/TweetDetail/screenshot_7.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_9.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_10.jpg?raw=true) |
![](https://github.com/TheAlphamerc/flutter_twitter_clone/raw/master/screenshots/Settings/screenshot_81.jpg?raw=true) |
- Project setup instructions are given at Wiki section.
Click to expand
|-- 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
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.
Sonu Sharma (Twitter) (Youtube) (Insta) (Dev.to)
![Twitter Follow](https://camo.githubusercontent.com/5ef40371055175849a8e881d76ba330c0e7fa3a8952fe008c554ab151f83f6c2/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f746865616c7068616d6572633f7374796c653d736f6369616c)
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 β
You can also nominate me for Github Star developer program
https://stars.github.com/nominate
![Loading](https://camo.githubusercontent.com/77aa161b839234e7331e2ed74c8afcc18ada6b3d62aa049091976decdb46302e/68747470733a2f2f70726f66696c652d636f756e7465722e676c697463682e6d652f666c75747465725f747769747465725f636c6f6e652f636f756e742e737667)