arcore_flutter_plugin 0.2.0-alpha copy "arcore_flutter_plugin: ^0.2.0-alpha" to clipboard
arcore_flutter_plugin: ^0.2.0-alpha copied to clipboard


Flutter plugin for ARCore SDK, Android platform to build new augmented reality experiences

I'm working to a new sceneview_flutter plugin to implement all features available in sceneview. SceneView is a Sceneform Maintained replacement in Kotlin.

arcore_flutter_plugin #

Awesome Flutter

Thanks to Oleksandr Leuschenko for inspiration and his precious code: arkit_flutter_plugin

Usage #

I wrote 2 articles for setup you project and start with ARCore Flutter Plugin:

ARCore Flutter Plugin: configurations.

ARCore Flutter Plugin: add object on the plane.

Configure your app #

To use this plugin, add arcore_flutter_plugin as a dependency in your pubspec.yaml file.

  1. Follow official guide to enable ArCore

  2. Add the Sceneform library to your app's build.gradle file:

android {
    // Sceneform libraries use language constructs from Java 8.
    // Add these compile options if targeting minSdkVersion < 26.
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8

dependencies {

    // Provides ArFragment, and other UX resources.
    implementation ''

    // Alternatively, use ArSceneView without the UX dependency.
    implementation ''
  1. Import the Sceneform plugin into your project (OPTIONAL)

Example #

The simplest code example:

import 'package:arcore_flutter_plugin/arcore_flutter_plugin.dart';
import 'package:flutter/material.dart';
import 'package:vector_math/vector_math_64.dart' as vector;

class HelloWorld extends StatefulWidget {
  _HelloWorldState createState() => _HelloWorldState();

class _HelloWorldState extends State<HelloWorld> {
  ArCoreController arCoreController;

  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Hello World'),
        body: ArCoreView(
          onArCoreViewCreated: _onArCoreViewCreated,

  void _onArCoreViewCreated(ArCoreController controller) {
    arCoreController = controller;


  void _addSphere(ArCoreController controller) {
    final material = ArCoreMaterial(
        color: Color.fromARGB(120, 66, 134, 244));
    final sphere = ArCoreSphere(
      materials: [material],
      radius: 0.1,
    final node = ArCoreNode(
      shape: sphere,
      position: vector.Vector3(0, 0, -1.5),

  void _addCylindre(ArCoreController controller) {
    final material = ArCoreMaterial(
      reflectance: 1.0,
    final cylindre = ArCoreCylinder(
      materials: [material],
      radius: 0.5,
      height: 0.3,
    final node = ArCoreNode(
      shape: cylindre,
      position: vector.Vector3(0.0, -0.5, -2.0),

  void _addCube(ArCoreController controller) {
    final material = ArCoreMaterial(
      color: Color.fromARGB(120, 66, 134, 244),
      metallic: 1.0,
    final cube = ArCoreCube(
      materials: [material],
      size: vector.Vector3(0.5, 0.5, 0.5),
    final node = ArCoreNode(
      shape: cube,
      position: vector.Vector3(-0.5, 0.5, -3.5),

  void dispose() {

See the example directory for a complete sample app.

3D Objects Credits #


Documentation #

Classes provided by the plugin #

There are a total of 13 classes provided by this plugin until May 2020.

  • ArCoreView
  • ArCoreController
  • ArCoreFaceView
  • ArCoreFaceContrller
  • ArCoreSphere
  • ArCoreCylinder
  • ArCoreCube
  • ArCoreNode
  • ArCoeMaterial
  • ArCoreHitTestResult
  • ArCoreRotatingNode
  • ArCorePlane
  • ArCoreReferenceNode

ArCoreView #

This class returns the view type. There are two types of views in it.


There are 4 properties in it:

  • onArCoreViewCreated
  • enableTapRecoginzer
  • enableUpdateListener
  • type

onArCoreViewCreated #

This property takes a ArCoreController.


Initially, set to false. It is used as an argument by the MethodChannel.


Initially, set to false. It is used as an argument by the MethodChannel.


It is a view type, it is either AUGMENTEDFACE, STANDARDVIEW*. It is set to STANDARDVIEW by default.

ArCoreController #

This 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.

ArCoreFaceView #

It is a stateful widget that returns a ArCoreAndroidView. It has two properties enableAugmentedFaces, onArCoreViewCreated.

Initially, enableAugmentedFaces is set to false. onArCoreViewCreated takes a function with ArCoreController argument.

ArCoreFaceController #

It used dispose and loadMesh method to control the FaceView.

ArCoreSphere #

It is ArCoreShape, takes a radius & ArCoreMaterial.

ArCoreCylender #

It is ArCoreShape, takes a radius, height, & ArCoreMaterial.

ArCoreCube #

It is ArCoreShape, takes a size i.e. Vector3 & ArCoreMaterial.

ArCoreNode #

This widget is used to provide the position, shape, scale, rotation, name.

ArCoreMaterial #

It is used to describe the outlook of the virtual object created by the user.

It has color,textureBytes, metallic, roughness, reflection.

ArCoreRotatingNode #

It is an ArCoreNode with a degreesPerSecond property which is a double value.

ArCorePlane #

It takes the x, y coordinate of the plane, ArCorePose & ArCorePlaneType.

There are three types of plane:


ArCoreReferenceNode #

It is ArCoreNode, it has all the properties that the ArCoreNode has also it has objectUrl and object3DFileName.

objectUrl #

URL of glft object for remote rendering.

object3DFileName #

Filename of sfb object in assets folder.

pub points



Flutter plugin for ARCore SDK, Android platform to build new augmented reality experiences

Repository (GitHub)
View/report issues


API reference




equatable, flutter, meta, vector_math


Packages that depend on arcore_flutter_plugin