inKino
A multiplatform Dart movie app with 40% of code sharing between Flutter and the Web.
inKino 是一款用于浏览 Finnkino 影院电影和放映时间的跨平台 Dart 应用。
InKino 展示了 Redux,拥有丰富的自动化测试集,并且 Flutter 和 Web 之间实现了 40% 的代码共享。Android 和 iOS 应用使用单一 Flutter 代码库构建。渐进式 Web 应用使用 AngularDart 构建。该项目总体上我认为是一个很好的跨平台 Dart 项目示例。
Folder structure
项目中有三个不同的文件夹。每个文件夹都是一个 Dart 项目。
- core:包含纯 Dart 业务逻辑,如 API 通信、Redux、XML 解析、清理、国际化、模型和实用工具。
它还拥有出色的测试覆盖率。 - mobile:这是 Flutter 项目。它导入 **core**,并且是应用于应用商店的原生 Android 和 iOS 应用的 100% 共享代码库。
- web:AngularDart 渐进式 Web 应用。它也导入 **core**,并且可以在 https://inkino.app 上访问。
要进行这些项目的开发,请在您选择的编辑器中打开它们。
例如,如果您想做一个新功能,并首先为 Flutter 项目实现它,您需要同时在两个编辑器窗口中打开 **core** 和 **mobile**。
为了说明,您需要为 core 执行 File -> Open...,然后再次为 mobile 执行 File -> Open...。
开发环境设置
- 安装 Dart for the web。Flutter 附带的定制 Dart 版本不适用于 Web 开发。
- 通过运行
pub global activate webdev安装 webdev。这要求您已正确运行 Dart 安装并且 Dart 已包含在您的 PATH 中。 - 安装 IDE。您不会出错选择 WebStorm。如果那不合您的胃口,还有其他选项。
- 为您的 IDE 安装 Dart 插件。
最后,如果您还没有安装,请安装 Flutter。
以及为您的 IDE 安装 Flutter 插件。
在撰写本文时,inKino 是使用 **Flutter 0.10.2** 构建的。
如果您不喜欢 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。


