{"id":13744327,"url":"https://github.com/giandifra/arcore_flutter_plugin","last_synced_at":"2025-10-22T23:48:15.734Z","repository":{"id":34793554,"uuid":"183178383","full_name":"giandifra/arcore_flutter_plugin","owner":"giandifra","description":"Flutter plugin for ARCore SDK, Android platform to build new augmented reality experiences","archived":false,"fork":false,"pushed_at":"2024-03-28T11:34:13.000Z","size":47719,"stargazers_count":446,"open_issues_count":152,"forks_count":319,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-10-22T23:48:10.131Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/giandifra.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["paypal.me/gianmarcodifrancesco"]}},"created_at":"2019-04-24T07:59:29.000Z","updated_at":"2025-08-31T14:54:39.000Z","dependencies_parsed_at":"2024-03-28T12:54:52.657Z","dependency_job_id":null,"html_url":"https://github.com/giandifra/arcore_flutter_plugin","commit_stats":{"total_commits":133,"total_committers":15,"mean_commits":8.866666666666667,"dds":"0.40601503759398494","last_synced_commit":"1ffb293a1e74c371e3f4bd2c4100b05577feac70"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/giandifra/arcore_flutter_plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giandifra%2Farcore_flutter_plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giandifra%2Farcore_flutter_plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giandifra%2Farcore_flutter_plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giandifra%2Farcore_flutter_plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giandifra","download_url":"https://codeload.github.com/giandifra/arcore_flutter_plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giandifra%2Farcore_flutter_plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280534671,"owners_count":26346713,"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","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-08-03T05:01:07.454Z","updated_at":"2025-10-22T23:48:15.708Z","avatar_url":"https://github.com/giandifra.png","language":"Kotlin","readme":"\nI'm working to a new [sceneview_flutter](https://pub.dev/packages/sceneview_flutter) plugin to implement all features available in [sceneview](https://github.com/SceneView/sceneview-android).\nSceneView is a [Sceneform Maintained](https://github.com/SceneView/sceneform-android) replacement in Kotlin.\n\n# arcore_flutter_plugin\n\n\u003ca href=\"https://github.com/Solido/awesome-flutter\"\u003e\n   \u003cimg alt=\"Awesome Flutter\" src=\"https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true\u0026style=flat-square\" /\u003e\n\u003c/a\u003e\n\nThanks to [Oleksandr Leuschenko](https://github.com/olexale) for inspiration and his precious code: [arkit_flutter_plugin](https://github.com/olexale/arkit_flutter_plugin)\n\n## Usage\n\nI wrote 2 articles for setup you project and start with ARCore Flutter Plugin:\n\n[ARCore Flutter Plugin: configurations](https://medium.com/@difrancescogianmarco/arcore-flutter-plugin-configurations-3ee53f2dc749).\n\n[ARCore Flutter Plugin: add object on the plane](https://medium.com/@difrancescogianmarco/arcore-flutter-plugin-add-object-on-the-plane-8b3d7cbde3d3).\n\n\n### Configure your app\n\nTo use this plugin, add arcore_flutter_plugin as a [dependency in your pubspec.yaml file](https://pub.dartlang.org/packages/arcore_flutter_plugin#-installing-tab-).\n\n1. Follow [official guide](https://developers.google.com/ar/develop/java/enable-arcore) to enable ArCore\n\n2. Add the Sceneform library to your app's build.gradle file:\n\n```\nandroid {\n    // Sceneform libraries use language constructs from Java 8.\n    // Add these compile options if targeting minSdkVersion \u003c 26.\n    compileOptions {\n        sourceCompatibility 1.8\n        targetCompatibility 1.8\n    }\n}\n\ndependencies {\n    …\n\n    // Provides ArFragment, and other UX resources.\n    implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.8.0'\n\n    // Alternatively, use ArSceneView without the UX dependency.\n    implementation 'com.google.ar.sceneform:core:1.8.0'\n}\n```\n\n3. [Import the Sceneform plugin into your project](https://developers.google.com/ar/develop/java/sceneform/#import-sceneform-plugin) (OPTIONAL)\n\n## Example\n\nThe simplest code example:\n\n```dart\nimport 'package:arcore_flutter_plugin/arcore_flutter_plugin.dart';\nimport 'package:flutter/material.dart';\nimport 'package:vector_math/vector_math_64.dart' as vector;\n\nclass HelloWorld extends StatefulWidget {\n  @override\n  _HelloWorldState createState() =\u003e _HelloWorldState();\n}\n\nclass _HelloWorldState extends State\u003cHelloWorld\u003e {\n  ArCoreController arCoreController;\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('Hello World'),\n        ),\n        body: ArCoreView(\n          onArCoreViewCreated: _onArCoreViewCreated,\n        ),\n      ),\n    );\n  }\n\n  void _onArCoreViewCreated(ArCoreController controller) {\n    arCoreController = controller;\n\n    _addSphere(arCoreController);\n    _addCylindre(arCoreController);\n    _addCube(arCoreController);\n  }\n\n  void _addSphere(ArCoreController controller) {\n    final material = ArCoreMaterial(\n        color: Color.fromARGB(120, 66, 134, 244));\n    final sphere = ArCoreSphere(\n      materials: [material],\n      radius: 0.1,\n    );\n    final node = ArCoreNode(\n      shape: sphere,\n      position: vector.Vector3(0, 0, -1.5),\n    );\n    controller.addArCoreNode(node);\n  }\n\n  void _addCylindre(ArCoreController controller) {\n    final material = ArCoreMaterial(\n      color: Colors.red,\n      reflectance: 1.0,\n    );\n    final cylindre = ArCoreCylinder(\n      materials: [material],\n      radius: 0.5,\n      height: 0.3,\n    );\n    final node = ArCoreNode(\n      shape: cylindre,\n      position: vector.Vector3(0.0, -0.5, -2.0),\n    );\n    controller.addArCoreNode(node);\n  }\n\n  void _addCube(ArCoreController controller) {\n    final material = ArCoreMaterial(\n      color: Color.fromARGB(120, 66, 134, 244),\n      metallic: 1.0,\n    );\n    final cube = ArCoreCube(\n      materials: [material],\n      size: vector.Vector3(0.5, 0.5, 0.5),\n    );\n    final node = ArCoreNode(\n      shape: cube,\n      position: vector.Vector3(-0.5, 0.5, -3.5),\n    );\n    controller.addArCoreNode(node);\n  }\n\n  @override\n  void dispose() {\n    arCoreController.dispose();\n    super.dispose();\n  }\n}\n```\n\nSee the `example` directory for a complete sample app.\n\n## 3D Objects Credits \n[Anonymous](https://poly.google.com/user/f8cGQY15_-g)\n\n---\n\n## Documentation \n\n### Classes provided by the plugin\n\n**There are a total of 13 classes provided by this plugin until May 2020.**\n\n- ArCoreView\n- ArCoreController\n- ArCoreFaceView\n- ArCoreFaceContrller\n- ArCoreSphere\n- ArCoreCylinder\n- ArCoreCube\n- ArCoreNode\n- ArCoeMaterial\n- ArCoreHitTestResult\n- ArCoreRotatingNode\n- ArCorePlane\n- ArCoreReferenceNode\n\n---\n\n### ArCoreView\n\nThis class returns the view type. There are two types of views in it.\n\n**AUGMENTEDFACE**\n**STANDARDVIEW**\n\nThere are 4 properties in it:\n- onArCoreViewCreated\n- enableTapRecoginzer\n- enableUpdateListener\n- type\n\n---\n\n### onArCoreViewCreated\n\nThis property takes a **ArCoreController**.\n\n---\n\n**enableTapRecoginzer**\n\nInitially, set to false. It is used as an argument by the MethodChannel.\n\n---\n\n**enableUpdateListener** \n\nInitially, set to false. It is used as an argument by the MethodChannel.\n\n---\n\n**type**\n\nIt is a view type, it is either **AUGMENTEDFACE, STANDARDVIEW***. It is set to **STANDARDVIEW** by default.\n\n---\n### ArCoreController\n\nThis controller used to add a ArNode using addArCoreNode function, add a ArCoreNode with ancher using a addArCoreNodeWithAncher function and also remove node using removeNode function.\n\n---\n\n### ArCoreFaceView\nIt is a stateful widget that returns a **ArCoreAndroidView**. It has two properties **enableAugmentedFaces, onArCoreViewCreated**.\n\nInitially, **enableAugmentedFaces** is set to false.\n**onArCoreViewCreated** takes a function with **ArCoreController** argument.\n\n---\n\n### ArCoreFaceController\nIt used dispose and **loadMesh** method to control the **FaceView**.\n\n---\n\n### ArCoreSphere\nIt is **ArCoreShape**, takes a **radius \u0026 ArCoreMaterial**.\n\n---\n\n### ArCoreCylender\nIt is **ArCoreShape**, takes a **radius, height, \u0026 ArCoreMaterial**.\n\n---\n\n### ArCoreCube\nIt is **ArCoreShape**, takes a size i.e. **Vector3 \u0026 ArCoreMaterial**.\n\n---\n\n### ArCoreNode\nThis widget is used to provide the **position, shape, scale, rotation, name**.\n\n---\n\n### ArCoreMaterial\nIt is used to describe the outlook of the virtual object created by the user.\n\nIt has **color,textureBytes, metallic, roughness, reflection**.\n\n---\n\n### ArCoreRotatingNode\nIt is an **ArCoreNode** with a **degreesPerSecond** *property* which is a double value.\n\n---\n\n### ArCorePlane\nIt takes the **x, y** coordinate of the plane, **ArCorePose \u0026 ArCorePlaneType**.\n\nThere are three types of plane:\n- **HORIZONTAL_UPWARD_FACING**\n- **HORIZONTAL_DOWNWARD_FACING**\n- **VERTICAL**\n\n---\n\n### ArCoreReferenceNode\nIt is ArCoreNode, it has all the properties that the ArCoreNode has also it has objectUrl and object3DFileName.\n\n---\n\n### objectUrl\nURL of glft object for remote rendering.\n\n---\n\n### object3DFileName\nFilename of sfb object in assets folder.\n","funding_links":["paypal.me/gianmarcodifrancesco"],"categories":["模板","Kotlin","Vision [🔝](#readme)","Templates","15. 增强现实（AR）开发"],"sub_categories":["视觉识别","视觉效果","Vision","应用内购买"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiandifra%2Farcore_flutter_plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiandifra%2Farcore_flutter_plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiandifra%2Farcore_flutter_plugin/lists"}