flutter twitter clone
a working twitter download written in flutter using firebase auth,realtime database and storage.
download app
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
1. setup flutter
2. download the repo
$ git https://github.com/thealphamerc/flutter_twitter_clone.git
$ cd flutter_twitter_clone/
3. setup the firebase app
- you’ll need to create a firebase instance for the twitter clone. follow the instructions at https://console.firebase.google.com.
- 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
- 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”
- (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/
.
- (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
Comments are closed.