{"id":51771985,"url":"https://github.com/abandoft/applet","last_synced_at":"2026-07-20T02:30:53.062Z","repository":{"id":368395440,"uuid":"1284759827","full_name":"abandoft/applet","owner":"abandoft","description":"JavaScript hot-update framework for Flutter","archived":false,"fork":false,"pushed_at":"2026-06-30T10:43:25.000Z","size":602,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-30T12:16:42.760Z","etag":null,"topics":["flutter","hotfix","javascript","ui"],"latest_commit_sha":null,"homepage":"https://abandoft.github.io/applet","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/abandoft.png","metadata":{"files":{"readme":"README-ZH.md","changelog":"CHANGELOG-ZH.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-30T07:05:55.000Z","updated_at":"2026-06-30T10:43:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/abandoft/applet","commit_stats":null,"previous_names":["abandoft/applet"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/abandoft/applet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abandoft%2Fapplet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abandoft%2Fapplet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abandoft%2Fapplet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abandoft%2Fapplet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abandoft","download_url":"https://codeload.github.com/abandoft/applet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abandoft%2Fapplet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35671346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"ssl_error","status_checked_at":"2026-07-20T02:08:09.736Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","hotfix","javascript","ui"],"created_at":"2026-07-20T02:30:52.324Z","updated_at":"2026-07-20T02:30:53.052Z","avatar_url":"https://github.com/abandoft.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Applet\n\n[Documentation](https://abandoft.github.io/applet) | [中文文档](https://abandoft.github.io/applet/zh)\n\nApplet 是一个基于 Flutter 的 JavaScript 热更新框架。\n\n它让 JavaScript 返回 Flutter 形状的组件树，由 Flutter 宿主\n渲染成真实 widget；组件、属性、函数、主题和导入方式尽量贴近 Flutter，\n同时提供类似 SwiftUI / Jetpack Compose 的现代化声明式写法。\n\nApplet 不是 WebView，而是用可控的 JS 运行时驱动原生 Flutter UI。\n\n## 项目特色\n\n- 原生渲染：JavaScript 描述 UI，Flutter 渲染真实 widget。\n- 热更新友好：支持 asset、源码、bundle 和 import map。\n- 低学习成本：组件、属性、主题和事件命名贴近 Flutter。\n- 现代写法：默认 ES module，支持模块化和局部状态。\n- 可扩展：宿主可以按需绑定业务组件、第三方组件和平台能力。\n\n## 快速开始\n\n添加依赖并声明 JS asset：\n\n```yaml\ndependencies:\n  applet: ^latest\n\nflutter:\n  assets:\n    - src/\n```\n\nDart 宿主只需要返回一个 `Applet` widget：\n\n```dart\nimport 'package:applet/applet.dart';\nimport 'package:flutter/widgets.dart';\n\nvoid main() {\n  runApp(\n    const Applet.asset('src/app.js'),\n  );\n}\n```\n\n`src/app.js`：\n\n```js\nimport \"@app/material\";\n\nexport default function App() {\n  const count = State(0);\n\n  return MaterialApp({\n    debugShowCheckedModeBanner: false,\n    title: \"Applet\",\n    theme: ThemeData({\n      useMaterial3: true,\n      colorScheme: ColorScheme.fromSeed({ seedColor: \"#006a6a\" }),\n    }),\n    home: Scaffold({\n      appBar: AppBar({ title: Text(\"Applet\") }),\n      body: Center(\n        VStack(\n          Text(\"Count: \" + count).fontSize(28).bold(),\n          FilledButton.icon({\n            icon: Icon(Icons.add),\n            label: Text(\"Increment\"),\n            onPressed: () =\u003e count.update((value) =\u003e value + 1),\n          })\n        ).gap(12).min()\n      ),\n    }),\n  });\n}\n```\n\n更多Applet的教程和技术细节请[查看文档](https://abandoft.github.io/applet/zh)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabandoft%2Fapplet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabandoft%2Fapplet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabandoft%2Fapplet/lists"}