inKino – 一个多平台Dart项目,在Flutter和Web之间共享代码

什么是inKino?
inKino是一款用于浏览Finnkino影院电影和放映时间的多平台Dart应用。
InKino展示了Redux,拥有广泛的自动化测试集,并且Flutter和Web之间实现了40%的代码共享。Android和iOS应用使用单一的Flutter代码库构建。渐进式Web应用使用AngularDart构建。这个项目总体上是我认为一个优秀的多平台Dart项目范例。
我计划撰写一系列关于多平台Dart的文章,所以你可能想访问我的博客并订阅它。
Folder structure
有三个不同的文件夹。它们每个都是一个Dart项目。
- core:包含纯Dart业务逻辑,如API通信、Redux、XML解析、清理、国际化、模型和实用工具。它还有很高的测试覆盖率。
- mobile:这是Flutter项目。它导入core,并且是100%代码共享的原生Android和iOS应用的代码库,这些应用会发布到应用商店。
- web:AngularDart渐进式Web应用。也导入core,并且它就是正在运行的https://inkino.app。
要处理这些项目,请在您选择的编辑器中打开每个项目。
例如,如果您想开发一个新功能,并首先为Flutter项目开发,您将打开core和mobile在单独的编辑器窗口中。为了更清楚地说明,您将执行File -> Open...来打开core,然后再次执行File -> Open...来打开mobile。
开发环境设置
- 请安装用于Web的Dart。Flutter附带的定制Dart版本不适用于Web开发。
- 通过运行
pub global activate webdev安装webdev。这要求您已正确运行Dart安装并且Dart已添加到您的PATH环境变量中。 - 安装一个IDE。您可以选择WebStorm。如果您不喜欢它,还有其他选择。
- 为您的IDE安装Dart插件。
最后,如果您还没有安装,请安装Flutter。以及为您的IDE安装Flutter插件。目前,inKino是用Flutter 1.0构建的。
如果您不喜欢IDE,您似乎也可以使用Emacs或Vim。
项目构建
重命名TMDB配置文件
您不需要TMDB API密钥,但没有它,演员图片将无法加载。
如果您尝试立即构建项目,您会收到一个关于缺少tmdb_config.dart文件的错误。要解决这个问题,请在项目的根目录下在终端中运行以下命令:
cd core/lib/src && mv tmdb_config.dart.sample tmdb_config.dart && cd ../../..
或者
如果您不信任从互联网复制的随机bash脚本,您可以手动将tmdb_config.dart.sample重命名为tmdb_config.dart。
从源代码构建
首先,请确保您已按照上面的“开发环境设置”部分进行操作。
- 要运行Web项目,请先运行初始的
pub get,然后在Web项目的根目录下运行webdev serve。 - 要运行Flutter项目,请在您的编辑器中打开它并点击播放按钮,或者在终端中运行
flutter run。


