AR in Flutter

 From this blog, you’ll learn about how to build an augmented reality app in Flutter with a plugin that supports both Android and iOS devices.
 An augmented reality app (AR app) is a software application that integrates digital visual content into the user's real-world environment. Hence to integrate visual contents into your flutter app ar_flutter_plugin was published by lars carius.

By the end of this blog you’ll know the following:

  • What is the ar_flutter_plugin ?
  • How to use this plugin?

What is the ar_flutter_plugin ?

The ar_flutter_plugin is a Flutter Plugin for creating Augmented Reality experiences on your app. With the help of this plugin you won’t have to use two separate plugins for android and iOS devices respectively as this plugin provides support to both the ARKit for iOS and the ARCore for Android devices.

What is ARKit?

ARKit is Apple’s set of tools that integrate iOS device camera and motion features to produce augmented reality experiences in your app or game.

ARKit is apple exclusive and some of the features from ARKit require iOS 12 or newer.

You can create many kinds of AR experiences with this technology using the front or rear camera of an iOS device. You can learn more about ARKit from here.

What is ARCore?

ARCore is Google’s platform for building augmented reality experiences. Using different APIs, ARCore enables your phone to sense its environment, understand the world and interact with information. Some of the APIs are available across Android and iOS to enable shared AR experiences.

ARCore uses three key capabilities to integrate virtual content with the real world as seen through your phone's camera:

You can learn about how ARCore works from here.

Before moving forward you should to have a basic understanding of these libraries:

  • ARNode:  ARNode is the model class for node-tree objects. It encapsulates the position, rotations, and other transforms of a node, which define a coordinate system.
  • ARView:  If camera permission is granted, ARView creates a platform-dependent view from the factory method.
  • ARObjectManager:  Manages the all node-related actions of an ARView.
  • ARSessionManager:  Manages the session configuration, parameters and events of an ARView.
  • ARLocationManager:  Is used to get the current location of the device and handle location permissions.

Lets get started!

First create a basic looking app.

 

Setting up the Plugin

Add Flutter Dependency

Install the ar_flutter_plugin in your pubspec.yaml file:


Android Configuration

Update the minSdkVersion in android > app > build.gradle file:


Using Local and Web Objects:

For using local objects you need to provide .gltf files in pubspec.yaml -


What is a gltf file?

glTF(Graphics Language Transmission Format) is a standard file format for three-dimensional scenes and models. A glTF file uses one of two possible file extensions: .gltf or .glb.

You can download some sample models from here.

Let’s start coding!

Update your update container with ARView as follows:


Use properties of this widget as per your preference,


If you want to show planes and node points for reference change the following properties in such a way:


By doing so you will be able to see the planes and surface like this:


Adding Local Object:

To add local objects from your gltf files to your rear view simply call this function on a button:



This is how Local object looks on your camera view.

Now let’s add a Web object our view!

The process of adding a Web object is awfully similar to adding a local object.



This is how Web object looks on your camera view.


Removing our Local/Web Object:

If you want to remove the added object from your view call this function:



After remove, Camera view


Conclusion

From this blog, you gained an understanding of ar_flutter_plugin and how to use it to build a simple augmented reality app using Flutter. For the next step, you can try rotating or transforming objects using gestures, re-sizing the objects or fetching 3D objects using Google Cloud or an external database.


We hope you enjoyed this blog. Thank you!

Recent stories

Have a product idea? Let’s build together!

Get in touch