ITADN
thunder-app/thunder
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Thunder

Thunder

一个使用 Flutter 构建的开源、跨平台(iOS & Android)Lemmy 客户端


Lemmy matrix chat

功能路线图贡献指南翻译从源码构建约定


Comments Card View Compact View Customizability

你好!只是想告诉你,这个仓库目前是我在边学习 Dart 和 Flutter 边构建有趣事物的个人副项目。

欢迎为本项目做出贡献,事实上,这里甚至强烈鼓励大家参与!由于我只能利用业余时间处理这个项目,因此来自社区的每一份贡献都弥足珍贵。如果你是一名开发者,请随时着手解决现有的任何问题。

你的热情、贡献和想法将受到极大的赞赏!让我们携手让这个项目大放异彩。🚀 💻


Releases

Android

通用版本可正式通过 Google Play StoreIzzyOnDroid 或 GitHub releases 获取。

预发布版本可在相应版本下的 Releases 部分获取。你也可以使用 Obtainium

iOS

通用版本可正式通过 App Store 或 GitHub releases 获取。

预发布版本可通过 TestFlight 获取。另一种方式是下载 Releases 部分中对应的 IPA 文件,并通过 AltStore 进行安装。

Features

Thunder 目前正处于活跃 alpha 开发阶段,在此阶段可能并非所有功能都已完全实现。因此,不同版本之间可能会出现重大的破坏性变更。

以下是 Thunder 当前支持的功能的非详尽列表:

🏡 社区与用户

  • 浏览信息流(全部 / 本地 / 已订阅)
  • 查看、订阅、收藏和屏蔽社区
  • 查看用户帖子/评论,并屏蔽不需要的用户

🌎 实例

  • 查看实例信息和版本
  • 屏蔽不需要的实例(在支持的实例上)

🔎 搜索

  • 显示当前实例上的热门社区
  • 搜索社区、用户、帖子和评论
  • 应用高级搜索过滤器(排序、信息流、社区、创建者)

🗒️ 帖子与评论

  • 创建和编辑帖子和评论
  • 投票、保存和分享帖子和评论
  • 自定义帖子和评论的滑动操作
  • 基于关键词过滤帖子

🔑 账户

  • 查看个人资料信息(帖子/评论/已保存)
  • 查看通知,包括回复、提及和私信
  • 同步的账户设置(显示已读帖子、评论分数、机器人账户)
  • 支持多账户,以及不同实例上的访客账户

🎨 自定义

  • 支持 Material You 主题(在适用设备上)
  • 支持浅色/深色/OLED/系统模式,以及预设强调色
  • 自定义内容字体缩放
  • 自定义并预览帖子/评论外观(紧凑/卡片)

🎉 附加功能

  • 导入和导出应用设置
  • 新 GitHub 发布的内置更新通知
  • 通过社区翻译支持多语言(Weblate)

路线图

当前的重点是继续扩展 Thunder 的通用功能和稳定性。这包括但不限于:

  • 通过 Weblate 持续改进本地化和语言支持
  • 改进审核/管理功能
  • 改进嵌入内容(视频、图片等)
  • 改进推送通知功能

贡献

欢迎贡献,但请遵守我们的社区行为准则

要贡献潜在的功能或错误修复:

  1. Fork this repository, and clone with submodules: git clone --recurse-submodules -j8 git@github.com:thunder-app/thunder.git
  2. Base the feature or fix off the develop branch. This is to allow for pre-release versions without affecting the main general releases.
  3. Apply any changes and/or additions based off an existing issue (or create a new issue for the feature/fix you are working on)
  4. Create a pull request to have your changes reviewed and merged

翻译

对翻译 Thunder 感兴趣吗?我们使用 Weblate 进行众包翻译,因此任何人都可以创建账户并做出贡献!

从源码构建

安装 Flutter 及相关依赖

Thunder 使用 Flutter 开发,旨在同时支持 iOS 和 Android。目前可能支持其他平台,但尚未得到保证(Linux、Windows、MacOS)

要从源代码构建应用程序,需要执行几个步骤。

  1. 设置并安装 Flutter。有关更多信息,请访问 https://docs.flutter.dev/get-started/install。
  2. 使用 flutter channel stable 确保你处于 Flutter 的 stable 通道。
  3. 克隆此仓库并使用 flutter pub get 获取依赖项。
  4. 运行 flutter gen-l10n 以生成本地化文件。
  5. 可选:使用 dart scripts/build.dart 运行构建脚本,这将同时构建 iOS 和 Android 的发布版本。此步骤仅在你想构建应用的发布版本时才需要。

使用 Docker 构建

或者,你可以跳过先决条件设置,并通过 docker 使用单个命令构建 Android 应用程序:

./scripts/docker-build-android.sh

使用 Docker 进行开发

你也可以通过 Docker 容器运行 Android 的本地开发环境,包括连接到主机上的 ADB。

./scripts/docker-dev-android.sh

故障排除

Could not determine the dependencies of task ':unifiedpush_android:compileReleaseKotlin'.
> Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=8, vendor=any, implementation=vendor-specific}
   > No locally installed toolchains match and toolchain download repositories have not been configured.

解决方案:请确保您的机器上已安装有效的 Java 8。

数据库

Thunder 使用 Drift(SQLite 的封装)来存储有关用户账户、收藏等的信息。如果您恰好正在处理涉及更新数据库架构的贡献,可以按照以下步骤操作。

  1. lib\src\core\database\tables.dart 中添加任何新的表或列
  2. lib\src\core\database\database.dart 中递增架构版本
  3. 运行 dart run drift_dev make-migrations 以生成正确的迁移逻辑和测试。这将自动创建新的架构版本。
  4. lib\src\core\database\database.dart 中实现迁移逻辑
  5. 运行 build_runner 重新生成文件:dart run build_runner build

约定

虽然没有必须遵循的具体约定,但请尽量遵循最佳实践。

欢迎提出任何建议以改进应用代码质量和架构!