Twitter clone using flutter framework

  Flutter App, Social Media, Twitter

Fwitter – Flutter Based Twitter Clone   

A working Twitter clone wrote in Flutter using Firebase auth, realtime database, and storage.

Download App

Features

  • App features is mentioned at project section Click here
  • Messaging chat section status can be seen at here

Dependencies

 Click to expand

Screenshots

Welcome PageLogin PageSignup PageForgot Password Page
Home Page SidebaarHome PageHome PageHome Page
Compose Tweet PageReply To TweetReply to TweetCompose Retweet with comment
Tweet Detail PageTweet ThreadNested Tweet ThreadTweet options
Notification PageNotification PageNotification PageNotification Setting Page
Profile PageProfile PageProfile PageProfile Page
Select User PageChat PageChat Users ListConversation Info Page
Search PageSearch Setting PageTweet Options – 1Tweet Options – 2
Setting PageAccount Setting PagePrivacy Setting PagePrivacy Settings Page
Content Prefrences PageDisplay Setting PageData Settings PageAccessibility Settings
Users who likes TweetAbout Setting PageLicenses SettingsSettings

Getting started

1. Setup Flutter

2. Clone the repo

$ git https://github.com/TheAlphamerc/flutter_twitter_clone.git
$ cd flutter_twitter_clone/

3. Setup the firebase app

  1. You’ll need to create a Firebase instance. Follow the instructions at https://console.firebase.google.com.
  2. Once your Firebase instance is created, you’ll need to enable Google authentication.
  • Go to the Firebase Console for your new instance.
  • Click “Authentication” in the left-hand menu
  • Click the “sign-in method” tab
  • Click “Google” and enable it
  • Click “Email/Password” and enable it
  1. Enable the Firebase Database
  • Go to the Firebase Console
  • Click “Database” in the left-hand menu
  • Click the Realtime “Create Database” button
  • Select “Start in test mode” and “Enable”
  1. (skip if not running on Android)
  • Create an app within your Firebase instance for Android, with package name com.thealphamerc.flutter_twitter_clone
  • Run the following command to get your SHA-1 key:
keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
  • In the Firebase console, in the settings of your Android app, add your SHA-1 key by clicking “Add Fingerprint”.
  • Follow instructions to download google-services.json
  • place google-services.json into /android/app/.
  1. (skip if not running on iOS)
  • Create an app within your Firebase instance for iOS, with your app package name
  • Follow instructions to download GoogleService-Info.plist
  • Open XCode, right click the Runner folder, select the “Add Files to ‘Runner'” menu, and select the GoogleService-Info.plist file to add it to /ios/Runner in XCode
  • Open /ios/Runner/Info.plist in a text editor. Locate the CFBundleURLSchemes key. The second item in the array value of this key is specific to the Firebase instance. Replace it with the value for REVERSED_CLIENT_ID from GoogleService-Info.plist

Directory Structure

|-- lib
|   |-- helper
|   |   |-- constant.dart
|   |   |-- customRoute.dart
|   |   |-- enum.dart
|   |   |-- routes.dart
|   |   |-- theme.dart
|   |   |-- utility.dart
|   |   '-- validator.dart
|   |-- main.dart
|   |-- model
|   |   |-- chatModel.dart
|   |   |-- commentModel.dart
|   |   |-- feedModel.dart
|   |   |-- notificationModel.dart
|   |   '-- user.dart
|   |-- page
|   |   |-- Auth
|   |   |   |-- forgetPasswordPage.dart
|   |   |   |-- selectAuthMethod.dart
|   |   |   |-- signin.dart
|   |   |   |-- signup.dart
|   |   |   '-- verifyEmail.dart
|   |   |-- common
|   |   |   |-- sidebar.dart
|   |   |   |-- splash.dart
|   |   |   |-- usersListPage.dart
|   |   |   '-- widget
|   |   |       '-- userListWidget.dart
|   |   |-- feed
|   |   |   |-- composeTweet
|   |   |   |   |-- composeTweet.dart
|   |   |   |   |-- createFeed.dart
|   |   |   |   '-- widget
|   |   |   |       |-- composeBottomIconWidget.dart
|   |   |   |       '-- composeTweetImage.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
|   |   |   '-- profilePage.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
|               |-- tweetBottomSheet.dart
|               |-- tweetIconsRow.dart
|               '-- tweetImage.dart
|-- pubspec.yaml

Contributing

If you wish to contribute a change to any of the existing features 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.

Download Twitter App Clone Source Code on GitHub

https://github.com/TheAlphamerc/flutter_twitter_clone