flutter_twitter_clone

一个使用 Firebase 身份验证、实时数据库和存储用 Flutter 编写的有效 Twitter 克隆。

下载应用

屏幕截图

欢迎页面 登录页面 注册页面 忘记密码页面
首页侧边栏 主页 主页 主页
撰写推文页面 回复推文 回复推文 带评论的转推
推文详情页 推文线 嵌套推文线 推文选项
通知页面 通知页面 通知页面 通知设置页面
个人资料页面 个人资料页面 个人资料页面 个人资料页面
选择用户页面 聊天页面 聊天用户列表 对话信息页
搜索页面 搜索设置页面 推文选项 - 1 推文选项 - 2
设置页面 账户设置页面 隐私设置页面 隐私设置页面
内容偏好设置页面 显示设置页面 数据设置页面 辅助功能设置
喜欢推文的用户 关于设置页面 许可证设置 设置

入门

1. 设置 Flutter

2. 克隆仓库

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

3. 设置 Firebase 应用

  1. 您需要创建一个 Firebase 实例。请按照 https://console.firebase.google.com 上的说明操作。
  2. 创建 Firebase 实例后,您需要启用 Google 身份验证。
  • 转到新实例的 Firebase 控制台。
  • 在左侧菜单中点击“身份验证”。
  • 点击“登录方法”选项卡。
  • 点击“Google”并启用它。
  • 点击“电子邮件/密码”并启用它。
  1. 启用 Firebase 数据库。
  • 转到 Firebase 控制台。
  • 在左侧菜单中点击“数据库”。
  • 点击“创建数据库”按钮(实时)。
  • 选择“以测试模式开始”并“启用”。
  1. (如果不在 Android 上运行,则跳过)
  • 在 Firebase 实例中为 Android 创建一个应用,包名为 com.thealphamerc.flutter_twitter_clone。
  • 运行以下命令获取您的 SHA-1 密钥。
keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
  • 在 Firebase 控制台中,在您的 Android 应用的设置中,通过点击“添加指纹”来添加您的 SHA-1 密钥。
  • 按照说明下载 google-services.json。
  • google-services.json 放入 /android/app/
  1. (如果不在 iOS 上运行,则跳过)
  • 在 Firebase 实例中为 iOS 创建一个应用,使用您的应用包名。
  • 按照说明下载 GoogleService-Info.plist。
  • 在 Xcode 中打开,右键单击 Runner 文件夹,选择“将文件添加到‘Runner’”菜单,然后选择 GoogleService-Info.plist 文件,将其添加到 Xcode 中的 /ios/Runner。
  • 在文本编辑器中打开 /ios/Runner/Info.plist。找到 CFBundleURLSchemes 键。此键的值数组中的第二个项目特定于 Firebase 实例。将其替换为 GoogleService-Info.plist 中 REVERSED_CLIENT_ID 的值。

目录结构

|-- 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

GitHub

https://github.com/TheAlphamerc/flutter_twitter_clone