تنافسوا
一个面向穆斯林的 Flutter 应用程序,帮助他们以有趣的方式挑战和激励自己以及他们的朋友诵读 Azkar。
另外,请查看 后端 仓库。
统计数据
- 12,200 次应用安装。
- 2543 已登录用户。
- 1113 用户至少有一个 Azkar 挑战。
- 999 用户至少有一个 Tafseer 挑战。
- 849 用户至少有一个阅读古兰经挑战。
- 205 用户有朋友。
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
设置开发环境
Git
要设置本地开发环境,您需要执行以下操作:
- Fork [tanafaso-frontend] (https://github.com/challenge-azkar/tanafaso-frontend)
- 使用 git clone
https://github.com/<your-github-username>/tanafaso-frontend克隆您的 fork - 根据您的本地环境,使用 cmd/终端导航到您的本地存储库
- 使用
git remote -v检查您的 fork 是否为 origin 远程,如果不是,则使用git remote add origin https://github.com/<your-github-username>/tanafaso-frontend添加 - 使用
git remote add upstream https://github.com/challenge-azkar/tanafaso-frontend将原始项目添加为 upstream 远程 - 恭喜,您现在可以开始贡献了,但请确保为您提出的每个更改创建一个分支。
Firebase 通知开发
请注意,如果您无意更改通知相关内容,则必须在文件 android/app/build.gradle 中注释掉 apply plugin: 'com.google.gms.google-services' 这一行,以便能够构建 Android 项目。
如果您打算更改通知相关内容,请创建一个 firebase cloud messaging 测试项目,然后将您从 firebase 获取的 google-services.json 文件移动到 android/app 目录。
依赖项
Android 依赖项
- Android Studio IDE
- Flutter SDK
- Java SDK
IOS 依赖项
- Xcode IDE
有关依赖项的更多信息,您可以查看 Flutter 文档。
代码规范
- 对文件名使用 snake_case。
- 文件名应对应文件中主类的名称。
- 包含整个屏幕的 widget 的文件名应以后缀:
_screen.dart结尾,例如,用于身份验证的 signup 或 login 会占据整个屏幕。 - 包含不占据整个屏幕的 widget 的文件名应以后缀:
_widget.dart结尾,例如,从 Facebook 或 Twitter 邀请朋友是一个 widget,因为它是一个屏幕 widget 的一部分,但它不占据整个屏幕。 - 对类名和枚举名使用 驼峰命名法。
- 对名称(类、变量、函数、模块)使用有意义的名称,以描述其功能。
- 确保所有 .dart 文件都使用
flutter format命令进行格式化。
代码结构
资源文件(图片、字体和证书)可以在 assets/ 文件夹中找到。
正如您可能已经知道的,Flutter 的厉害之处在于您只需编写一次 Dart 代码,
然后 Flutter 会努力将其编译成本地 Android 和 iOS 代码。您可以在
以下目录中找到编译后的本地代码(请注意,您很少需要
更改这些
目录中的代码)
所有 dart 代码都可以在 lib/ 目录中找到。
- lib/models/:包含应用程序中使用的所有模型的定义(例如,User、Challenge
等),还定义了每个模型应如何进行编码和解码。 - lib/net/:实现前端与后端(challenge-azkar/tanafaso-backend)之间的连接。
- lib/net/endpoints.dart 包含此
前端版本 API 支持的所有端点。
- lib/net/endpoints.dart 包含此
- lib/utils/:包含在整个应用程序代码中使用的工具类。
- lib/views/:包含所有用户界面的声明。
- *Screen.dart:以“Screen”后缀结尾的类声明了用户将看到的整个屏幕。
用户将看到的。 - *Widget.dart:以“Widget”后缀结尾的类声明了一个将成为用户屏幕一部分的 widget。
屏幕的一部分。
- *Screen.dart:以“Screen”后缀结尾的类声明了用户将看到的整个屏幕。
贡献
(可选)加入 Tanafaso 的 Discord 服务器 以提供反馈、提出新功能或寻求帮助。
有很多方法可以为这个项目做出贡献。您可以按 good first issue 标签过滤 issues,以开始处理一个易于修复的问题。
- 通过提交 issue 来建议新功能。
- 通过提交 issue 来报告 bug。
- 添加代码文档,以便未来的贡献者更容易上手。
- 添加单元测试(请阅读 测试策略)。
- 添加 widget 测试(请阅读 测试策略)。
- 重构代码,使其更具可读性、可维护性和可扩展性。
- 添加包含 bug 修复的 pull requests。
- 添加包含新功能的 pull requests。
许可证
应用程序代码根据 MIT 许可证 获得许可。







