[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9160":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":38,"discoverSource":39},9160,"inKino","roughike\u002FinKino","roughike","A multiplatform Dart movie app with 40% of code sharing between Flutter and the Web.","https:\u002F\u002Finkino.app",null,"Dart",3681,700,105,23,0,2,3,1,61.84,"Apache License 2.0",false,"development",true,[26,27,28,29,30,31,32,33,34],"angular","angulardart","cross-platform","dart","dartlang","flutter","flutter-redux","multiplatform","testing","2026-06-12 04:00:43","# inKino - a multiplatform Dart project with code sharing between Flutter and web\n\n\u003Cimg src=\"assets\u002Fscreenshots\u002Fnow_in_theaters.png\" width=\"32%\" \u002F> \u003Cimg src=\"assets\u002Fscreenshots\u002Fshowtimes.png\" width=\"32%\" \u002F> \u003Cimg src=\"assets\u002Fscreenshots\u002Fevent_details.png\" width=\"32%\" \u002F>\n\n## What is inKino?\n\n[![Build Status](https:\u002F\u002Ftravis-ci.org\u002Froughike\u002FinKino.svg?branch=development)](https:\u002F\u002Ftravis-ci.org\u002Froughike\u002FinKino)\n\ninKino is a _multiplatform_ Dart app for browsing movies and showtimes for Finnkino cinemas. \n\nInKino showcases Redux, has an extensive set of automated tests and **40% code sharing between Flutter and web**.\nThe Android & iOS apps are made with a single [Flutter](http:\u002F\u002Fflutter.io) codebase. The progressive web app is made with [AngularDart](https:\u002F\u002Fwebdev.dartlang.org\u002Fangular). \nThis project is generally something that I believe is a good example of a multiplatform Dart project.\n\nI plan on doing a full article series on multiplatform Dart stuff, so you might want to [check out my blog](https:\u002F\u002Fiirokrankka.com) and subscribe to it.\n\n\u003Cdiv>\n\u003Ca href='https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.roughike.inkino'>\u003Cimg alt='Get it on Google Play' src='assets\u002Fscreenshots\u002Fgoogle_play.png' height='48px'\u002F>\u003C\u002Fa>\n\u003Ca href='https:\u002F\u002Fitunes.apple.com\u002Fus\u002Fapp\u002Finkino\u002Fid1367181450'>\u003Cimg alt='Get it on the App Store' src='assets\u002Fscreenshots\u002Fapp_store.png' height='48px'\u002F>\u003C\u002Fa>\n\u003Ca href='https:\u002F\u002Finkino.app'>\u003Cimg alt='Get it on the App Store' src='assets\u002Fscreenshots\u002Flaunch_pwa.png' height='48px'\u002F>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## Folder structure\n\nThere's three different folders. Each of them is a Dart project.\n\n* **core**: contains the pure Dart business logic, such API communication, Redux, XML parsing, sanitization, i18n, models and utilities. \nIt also has a great test coverage.\n* **mobile**: this is the Flutter project. It imports **core**, and it's a 100% shared codebase for the native Android & iOS apps that go on app stores.\n* **web**: the AngularDart progressive web app. Also imports **core**, and it's the thing that is live at https:\u002F\u002Finkino.app.\n\nTo work on these projects, open each one of them in an editor of your choice. \n\nFor example, if you want to do a new feature and you do it for the Flutter project first, you'd open both **core** and **mobile** in separate editor windows.\nTo clarify, you'd do `File -> Open...` for core and then `File -> Open...` again for mobile.\n\n## Development environment setup\n\n* [Install Dart for the web](https:\u002F\u002Fwebdev.dartlang.org\u002Ftools\u002Fsdk#install). The customized Dart version Flutter ships with is not suitable for web development.\n* Install [webdev](https:\u002F\u002Fwebdev.dartlang.org\u002Ftools\u002Fwebdev) by running `pub global activate webdev`. This requires that you ran your Dart installation properly and Dart is part of your PATH.\n* Install an IDE. You can't go wrong with [WebStorm](https:\u002F\u002Fwebdev.dartlang.org\u002Ftools\u002Fwebstorm). If that doesn't tickle your fancy, [there are other options too](https:\u002F\u002Fwww.dartlang.org\u002Ftools#ides).\n* Install the Dart plugin for your IDE.\n\nFinally, if you haven't already, [install Flutter](https:\u002F\u002Fflutter.io\u002Fdocs\u002Fget-started\u002Finstall).\nAnd the Flutter plugin for your IDE. \nAt the time of being, inKino is built with **Flutter 1.0**.\n\nIf you don't like IDEs, [you can apparently use Emacs or Vim too](https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=16822780).\n\n## Building the project\n\n### Renaming the TMDB configuration file\n\nYou don't need a TMDB API key, but the actor images won't load without it.\n\nIf you try to build the project straight away, you'll get an error complaining that a tmdb_config.dart file is missing.\nTo resolve that, run this on your terminal in the project root:\n\n```bash\ncd core\u002Flib\u002Fsrc && mv tmdb_config.dart.sample tmdb_config.dart && cd ..\u002F..\u002F..\n```\n\n**OR**\n\nIf you don't trust in random bash scripts copied from the Internet, you can just rename the `tmdb_config.dart.sample` to `tmdb_config.dart` manually.\n\n### Building from source\n\nFirst, ensure that you followed the \"Development environment setup\" section above.\n\n* To run the **web project**, first run `pub get` initially, and then `webdev serve` in the root of the web project.\n* To run the **Flutter project**, open it in your editor and click the play button, or run `flutter run` on your terminal.\n\n## Contributing\n\nContributions are welcome! \nHowever, if it's going to be a major change, please create an issue first. \nBefore starting to work on something, please comment on a specific issue and say you'd like to work on it.\n\n## Thanks\n\nSpecial thanks to [Olli Haataja](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Folli-haataja-46b96b120\u002F) for the design. \n\nAdditional thanks for the initial release go to [Thibaud Colas](https:\u002F\u002Ftwitter.com\u002Fthibaud_colas), [Brian Egan](https:\u002F\u002Ftwitter.com\u002Fbrianegan), [Alessandro Aime](https:\u002F\u002Ftwitter.com\u002Faimealessandro) and [Juho Rautioaho](https:\u002F\u002Fgithub.com\u002FJraut) for giving their extra pair of eyes for reviewing the source code.\n","inKino 是一个使用 Dart 语言开发的多平台电影应用，实现了 Flutter 和 Web 端之间 40% 的代码共享。项目利用 Redux 进行状态管理，并拥有全面的自动化测试集。其核心功能包括浏览电影信息和 Finnkino 电影院的放映时间。技术特点上，移动端应用基于 Flutter 构建，而渐进式网页应用则采用 AngularDart 实现。适用于需要在不同平台上提供一致用户体验的场景，尤其是那些希望减少跨平台开发成本并提高代码复用率的开发者或团队。","2026-06-11 03:21:30","top_language"]