{"id":13486543,"url":"https://github.com/areslabs/flutter_mp","last_synced_at":"2025-04-04T20:14:38.101Z","repository":{"id":45554914,"uuid":"210314691","full_name":"areslabs/flutter_mp","owner":"areslabs","description":"Bring your Flutter code to mini program","archived":false,"fork":false,"pushed_at":"2019-10-25T07:12:49.000Z","size":749,"stargazers_count":746,"open_issues_count":13,"forks_count":67,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-03-28T19:09:36.806Z","etag":null,"topics":["flutter","mini-program","wechat","wechat-mini-program","wexin"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/areslabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-23T09:24:06.000Z","updated_at":"2025-03-28T07:05:26.000Z","dependencies_parsed_at":"2022-09-22T20:01:12.861Z","dependency_job_id":null,"html_url":"https://github.com/areslabs/flutter_mp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areslabs%2Fflutter_mp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areslabs%2Fflutter_mp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areslabs%2Fflutter_mp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areslabs%2Fflutter_mp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/areslabs","download_url":"https://codeload.github.com/areslabs/flutter_mp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242680,"owners_count":20907134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","mini-program","wechat","wechat-mini-program","wexin"],"created_at":"2024-07-31T18:00:48.101Z","updated_at":"2025-04-04T20:14:38.072Z","avatar_url":"https://github.com/areslabs.png","language":"Dart","readme":"# flutter_mp\n\n**flutter_mp**的目标是把**Flutter**扩展到类小程序平台，**Flutter**是一个非常优秀的跨端框架，不仅可以运行在`Android`， `iOS`，通过**flutter_web**还可以运行在`web`平台，但是官方并没有涉及小程序平台，希望**flutter_mp**可以填补这方面的空白。\n\n**flutter_mp** inspired by [Alita](https://github.com/areslabs/alita)。 [Alita](https://github.com/areslabs/alita)引擎对`JSX`的[动态处理方式](https://areslabs.github.io/alita/一种让小程序支持JSX语法的新思路.html)，给声明式UI框架在\n类小程序运行提供了思路。**flutter_mp**正是这个思路在**Flutter**上的实践。不过，现在**flutter_mp**还处于很早期的实验阶段，如果现在你的产品就有APP端，小程序端的多端需求，暂时我们还是建议你使用[Alita](https://github.com/areslabs/alita)，这是一套相对成熟的基于React Native的方案。\n\n现阶段，**flutter_mp**还是一个很不成熟的项目，完成度还很低，很多东西还在探索阶段，离实际的可用还有很长的距离，我们也仅仅是把官方简单demo\n运行在了微信小程序。另外，把所有的**Flutter**特性都在小程序上实现我们认为是不可能的，肯定会存在一些阉割和取舍，包括动画，手势等等在内的还原程度，我们也还在思考，欢迎关注我们最新的进展。\n\n\u003ctable\u003e\n   \u003ctr\u003e\n   \t    \u003ctd\u003eFlutter\u003c/td\u003e\n   \t    \u003ctd\u003e微信小程序\u003c/td\u003e\n   \u003c/tr\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"./static/flutter_lakes.jpg\"/\u003e\u003c/td\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"./static/mp_lakes.jpg\"/\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\u003c/table\u003e\n\n## 相关文章\n* [把Flutter扩展到微信小程序端的探索](./doc/把Flutter扩展到微信小程序端的探索.md)\n\n## TODO\n暂时，我们还只支持`Center`，`Column`，`Container` ，`Expanded`，`Image.asset`，`ListView`，`Row`，`Text`这些基本Widget，暂不支持\n自定义Widget，即使这些基本Widget也不是完全体，比如`ListView`。而且你的`Flutter`代码只能够出现在`lib/main.dart`文件中。 我们将大致按照如下的\n顺序一步步完善`flutter_mp`。\n\n1. 寻求**Flutter**布局在css下的等效表达\n2. 完善基本 Widget\n3. 支持 stateful Widget\n4. 支持自定义Widget\n5. 事件/生命周期\n6. 多页面，导航/路由的支持\n7. Flutter动画在小程序的部分实现（能还原的程度？？）\n6. 小程序性能优化\n7. 小程序包体积优化\n8. 其他\n\n## Getting started\n现阶段，我们建议你仅仅在`Examples`下的[lakes](https://github.com/areslabs/areslabs/tree/master/examples/lakes)下修改代码，尝试**flutter_mp**。\n\n\n1. 安装`flutter_mp`命令\n    ```shell\n       pub global activate --source git https://github.com/areslabs/flutter_mp.git\n    ```\n\n2. 运行`flutter_mp -v` 查看命令是否安装成功\n    \n3. 在你的`flutter`项目添加如下依赖\n   ```yaml\n      dev_dependencies:\n        flutter_mp:\n           git:\n             url: https://github.com/areslabs/flutter_mp\n             path: packages/flutter_mp\n   ```\n   \n4. 执行命令 `flutter_mp -i [flutter目录] -o [目标小程序目录]` \n\n5. 使用微信开发者导入打开 `4`过程的 `[目标小程序目录]` 。\n\n这样你的flutter应用就运行在了微信小程序上\n\n## Examples\n1. 官方布局样例[lakes](https://github.com/areslabs/flutter_mp/tree/master/examples/lakes), 对应编译出来的小程序在[lakesMP](https://github.com/areslabs/flutter_mp/tree/master/examples/lakes)(当然你可以手动编译到任何你喜欢到目录)。\n\n## 更新日志\n本项目遵从 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)，更新日志由 `conventional-changelog` 自动生成。完整日志请点击 [CHANGELOG.md](./CHANGELOG.md)。\n\n## License\nMIT License\n\nCopyright (c) ARES Labs\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fareslabs%2Fflutter_mp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fareslabs%2Fflutter_mp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fareslabs%2Fflutter_mp/lists"}