{"id":13449181,"url":"https://github.com/imboy-pub/imboy-flutter","last_synced_at":"2025-03-22T22:32:11.887Z","repository":{"id":37875443,"uuid":"295933983","full_name":"imboy-pub/imboy-flutter","owner":"imboy-pub","description":"使用erlang做后端、flutter做前端开发的一款开源的即时聊天解决方案（基于erlang/otp的高性能web框架 cowboy 做后端服务，用 \"8核16G 主机（100万PPS）\"压测，保持100万+TCP稳定在线90分钟以上） 支持基于webrtc 一对一视频通话功能","archived":false,"fork":false,"pushed_at":"2024-11-19T00:41:38.000Z","size":10116,"stargazers_count":61,"open_issues_count":3,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-19T01:40:00.523Z","etag":null,"topics":["android","flutter","ios"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imboy-pub.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2020-09-16T05:39:22.000Z","updated_at":"2024-11-18T04:47:07.000Z","dependencies_parsed_at":"2023-10-14T13:53:39.853Z","dependency_job_id":"30e64b40-a93f-4012-aa3e-530191386975","html_url":"https://github.com/imboy-pub/imboy-flutter","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/imboy-pub%2Fimboy-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imboy-pub%2Fimboy-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imboy-pub%2Fimboy-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imboy-pub%2Fimboy-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imboy-pub","download_url":"https://codeload.github.com/imboy-pub/imboy-flutter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245028921,"owners_count":20549618,"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":["android","flutter","ios"],"created_at":"2024-07-31T06:00:32.897Z","updated_at":"2025-03-22T22:32:11.254Z","avatar_url":"https://github.com/imboy-pub.png","language":"Dart","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# imboy\n\nA new Flutter project for imboy.\n\nimboy 的Flutter项目\n\n因为我是中国人，所以选择了[木兰宽松许可证, 第2版](https://gitee.com/imboy-pub/imboy-flutter/blob/main/LICENSE)\n\n所有依赖的flutter包大部分是“MIT License” 和 “Apache-2.0 License”（以后陆续补充一个）\n\n## APP截图\n更多截图[来这里](./doc/appui.md)\n\n\u003ctable\u003e\n    \u003ctd width=\"32%\"\u003e\n        \u003cimg alt=\"\" src=\"https://a.imboy.pub/img/20225/25_21/ca73910gph0gio9q2pg0.png?s=open\u0026a=4e2498d2673bf43d\u0026v=1687988290\u0026width=600\" width=\"100%\"/\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"32%\"\u003e\n        \u003cimg alt=\"\" src=\"https://a.imboy.pub/img/20225/25_21/ca73cl0gph0gio9q2pp0.png?s=open\u0026a=1ffbf5e386ad0272\u0026v=1687988290\u0026width=600\" width=\"100%\"/\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"32%\"\u003e\n        \u003cimg alt=\"\" src=\"https://a.imboy.pub/img/20225/25_22/ca73d6ogph0gio9q2psg.png?s=open\u0026a=b2a2bd2380208f87\u0026v=1687988290\u0026width=600\" width=\"100%\"/\u003e\n    \u003c/td\u003e\n\u003c/table\u003e\n\n## 功能树\n\n* 大概的大大小小功能实现情况：\n    * TODO 54\n    * OK 144\n\n[查看](./doc/feature_tree.md)\n\n## Version\n力求基于“语义化版本控制的规范”([语义化版本 2.0.0](https://semver.org/lang/zh-CN/))实施版本管理.\n\nStrive to implement version management based on \"Specification for Semantic version Control\"([Semantic Versioning 2.0.0](https://semver.org/)).\n\n## 已知待修复待完善的功能\n* “查找聊天记录”列表定位到具体的聊天记录（不在当前页面）的情况下没法定义（暂时没见到解决版本）\n* 聊天界面表情符弹框没法像键盘一样\"点击页面其他空白处收缩回去\" （已解决）\n* 拍摄视频、上传视频功能（体验不是很好，一分半的视频大小为11M，有待优化）filesize\":11649618,\"width\":640,\"height\":360,\"duration\":86876.0\n* 红米A5手机，拍摄视频问题\n    * https://github.com/flutter/flutter/issues/40519\n    * https://github.com/fluttercandies/flutter_wechat_camera_picker/issues/12\n* use-flutter-cache-manager-with-video-player 如何边下载、边缓存、边播放 https://stackoverflow.com/questions/68249750/use-flutter-cache-manager-with-video-player\n* 语音消息播放之后红点需要取消（已解决）\n* 一对一视频通话偶尔有问题，需要进一步优化（以优化，可以进一步调整体验）\n* 消息\"长按事件\"不够灵活（已解决）\n* 群消息读取的时候是直接limit读取的，这样可能对于未读消息数量这块不好处理\n\n## 多语言\nhttps://github.com/jonataslaw/get_cli/tree/master/translations\n```\nflutter pub global activate get_cli\nflutter pub global activate --source=git https://github.com/inyong1/get_cli.git\n\nexport PATH=\"$PATH\":\"$HOME/.pub-cache/bin\"\n\n// 生产json文件之后执行下面命令\nget generate locales assets/locales on lib/component/locales\n\nSystem locale\n\nreturn GetMaterialApp(\n    locale: Get.deviceLocale,\n);\n```\n\n## 开发环境遇到的一些问题\n参考 [FAQ](./doc/FAQ.md)\n\n## 目录规范与命名\n\n* 新增 ./lib/page/single/ 目录，所有的 \"类单页面\" 都放到该目录\n* 避免 master/slave 等术语\n\n| Old       | New         | 说明   |\n|-----------|-------------|------|\n| master    | main        | 主要的  |\n| slave     | subordinate | 从属的  |\n| blacklist | denylist    | 拒绝名单 |\n\n```\n.env\nLib\n│\n├──page 落地页\n│   ├──single 所有的 \"类单页面\" 都放到该目录\n│   └──login 页面落地页文件夹\n│        ├──login_binding.dart =\u003e class LoginBinding 可省略\n│        ├──login_logic.dart =\u003e class LoginLogic\n│        ├──login_state.dart =\u003e class LoginState 可省略\n│        └──login_view.dart =\u003e class LoginPage 后缀为page为落地页 唯一入口\n├──component 通用组件\n│        ├──extension\n│             └──get_extension.dart =\u003e class GetExtension\n│        ├──helper 公共方法\n│             └──func.dart =\u003e 常规方法、通用方法、全局方法可以用过这个入口export 避免重复引入、可以作用通过用方法入口\n│        ├──http HTTP客户端封装\n│             └──http.dart =\u003e\n│        ├──ui\n│             └──common.dart =\u003e class UserObject\n│        ├──view\n│             └──user_object.dart =\u003e class UserObject\n│        └──widget\n│             └──user_object.dart =\u003e class UserObject\n├──store 数据集中管理\n│    ├──index.dart 实例化Provider export model类\n│    ├──proto pb协议转换代码\n│    ├──service pb协议 yyp协议 等等转义成 dart方法\n│    ├──model\n│    │    ├──user_model.dart =\u003e class UserModel\n│    │    └──index.dart =\u003e export all models\n│    └──object\n│         └──user_object.dart =\u003e class UserObject\n├──config 配置中心\n│    ├──index.dart 配置变量与切换方法\n└──router 路由\n     └──  页面映射配置、observe 方法导出\n\n```\n## init\n```\ngit clone https://gitee.com/imboy-pub/imboy-flutter.git imboyflutter\ncd imboyflutter\ncp ./example.env ./.env.dev \u0026\u0026 cp ./example.env ./.env.pro\n\ncp example_main.dart main.dart\n\ndart run build_runner build --verbose\ndart run build_runner build --delete-conflicting-outputs\n\n\n//修改.env文件时\ndart run build_runner clean \u0026\u0026 dart run build_runner build --delete-conflicting-outputs\n\nopen -a Xcode ./ios\n\n\n```\n\n\n## plugin\n\n```\nmkdir -p plugin \u0026\u0026 cd plugin/\n\ngit clone https://gitee.com/imboy-tripartite-deps/flutter_chat_ui.git\n\ncd flutter_chat_ui \u0026\u0026 git fetch origin leeyi \u0026\u0026 git checkout -f leeyi\n\n```\n\n然后在 pubspec.yaml 文件添加\n```\n  flutter_chat_ui:\n    path: plugin/flutter_chat_ui\n```\n\n参考 https://juejin.cn/post/6844903920322478093\n\n## macos\n```\nopen macos/Runner.xcworkspace\n\n```\n\n## 分析工具\n\n* https://pub.flutter-io.cn/packages/fps_monitor 这是一个能在 profile/debug 模式下，直观帮助我们评估页面流畅度的工具！！\n\n\n## deps:\n```\narch -x86_64 pod update\n\narch -x86_64 pod install\n\n```\n\n\n```\ncd ios\narch -x86_64 pod update\n\narch -x86_64 pod update flutter_webrtc\n\ncd ios \u0026\u0026 rm -rf Podfile.lock pods .symlink Runner.xcworkspace \u0026\u0026 pod install --repo-update \u0026\u0026 flutter clean \u0026\u0026 flutter pub get \u0026\u0026 pod update \u0026\u0026 cd ..\n```\n\n### deps flutter_dotenv\n\nhttps://pub.flutter-io.cn/packages/flutter_dotenv\n```\ncd imboy-flutter\ncp -f assets/example.env assets/.env\n\n// 手动修改相应的配置\n\n```\n\n### deps flutter_native_splash\n```\ndart run flutter_native_splash:create\n```\n\n### deps flutter_sound_install\n\nhttps://flutter-sound.canardoux.xyz/flutter_sound_install.html\nOn iOS you need to add usage descriptions to info.plist:\n\n\n```\ncd ios\npod cache clean --all\nrm Podfile.lock\nrm -rf .symlinks/\ncd ..\nflutter clean\nflutter pub get\ncd ios\npod update\npod repo update\npod install --repo-update\npod update\npod install\ncd ..\n```\n\n### voice_message_package\n```\nmkdir -p plugin \u0026\u0026 cd plugin/\ngit clone https://gitee.com/imboy-tripartite-deps/voice_message_player.git voice_message_package\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimboy-pub%2Fimboy-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimboy-pub%2Fimboy-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimboy-pub%2Fimboy-flutter/lists"}