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 项目示例。

Get it on Google Play Get it on the App Store Get it on the App Store

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

GitHub

https://github.com/roughike/inKino