Flutter-ARMOD-Widget

Flutter AR-MOD widget for embedding AR features in flutter.

What is the ARMOD SDK?

In short, ARMOD's solution is an AR experience platform solution similar to Snapchat (Lens Studio) and Facebook (SparkAR)!

AR-MOD is a derivative framework based on Unity ARFoundation. MOD in AR-MOD means Modification in English, meaning: modification and module. This concept is widely used in games, corresponding to modifiable video games. Famous games such as Warcraft, Red Alert, Half-Life, CS, Victory Day and more!

We transplant the MOD concept into AR technology to give users more freedom to create the AR creative interactive experience content they need! In this process, users do not need to worry about AR-SDK algorithm and code implementation, but only need to devote themselves to the production of AR creative interactive experience content. With only a small amount of code, you can use all the capabilities of AR-MOD on the APP to create greater commercial value.

Getting Started

  1. Install this plugin to your flutter project. If you do not know how to install the Flutter Package you can click here to see the document.

    Install Guid

    The AR-MOD SDK currently provides a plug-in package for Flutter. You can install it through flutter_armod_widget: ^0.0.3 in your flutter project pubspec.yaml !

       # Other config
       dependencies:
         flutter:
           sdk: flutter
         flutter_armod_widget: ^0.0.3
       # Other config
    
    
  1. Go to PhantomsXR github respository. Download and Unzip it.

  2. Choose iOS or Android platform from the options below to set.

    Android Setup
    1. Go to the location of your FLUTTER SDK PATH/.pub-cache/hosted/pub.dartlang.org/flutter_armod_widget-0.0.3/ folder, then paste the libs to android platform folder.

    2. Run Flutter pub get command in your termial.

<details>
<summary>iOS Setup</summary>

  1. Create the `ThirdParties` folder to your XCode project.

  2. Import `UnityFramework.framework` to the folder(ThridParties). 
  
  3. Add the Framewrok to Xcode -> Targets -> Your APP -> General -> Franework,Libraries, and Embedded Content area, And set the Embed mode to Embed & Sign.

  4. Execute the `cd iOS` command and run `Pod install` command in your termial.

  5. Double-Click to open the `Runner.xcworkspace` file. It will be launch the XCode app.

  6. If you're using Swift, open the *ios/Runner/AppDelegate.swift* file and change the following:

      ```diff
          import UIKit
          import Flutter
      +    import flutter_armod_widget

          @UIApplicationMain
          @objc class AppDelegate: FlutterAppDelegate {
              override func application(
                  _ application: UIApplication,
                  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
              ) -> Bool {
      +           InitARMODIntegrationWithOptions(argc: CommandLine.argc, argv: CommandLine.unsafeArgv, launchOptions)
      +           let nativeCalls: AnyClass? = NSClassFromString("FrameworkLibAPI")
      +           nativeCalls?.registerAPIforNativeCalls(ARMODCallbackAPI())
                  GeneratedPluginRegistrant.register(with: self)
                  return super.application(application, didFinishLaunchingWithOptions: launchOptions)
              }
          }
      ```

      > If you're using Objective-C, open the *ios/Runner/main.m* file and change the following:
      ```diff
      +    #import "flutter_armod_widget.swift.h"

          int main(int argc, char * argv[]) {
                @autoreleasepool {
      +             InitARMODIntegration(argc, argv);
      +             [NSClassFromString(@"FrameworkLibAPI") registerAPIforNativeCalls:[ARMODCallbackAPI alloc]];
                    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
                }
          }
      ```

  7. Edit the info.plist

      ```diff
          <dict>
      +        <key>io.flutter.embedded_views_preview</key>
      +        <string>YES</string>
          </dict>
      ```

      ```diff
          <dict>
      +        <key>Privacy - Camera Usage Description</key>
      +        <string>$(PRODUCT_NAME) uses Cameras</string>
          </dict>
      ```

      ```diff
          <dict>
      +       <key>NSBonjourServices</key>
      +       <string>_dartobservatory._tcp</string>
          </dict>
      ```
</details>
  1. Create and write your app token to PhantomsXRConfig.dart.

  2. And write a new screen for AR-MOD.

Libraries

flutter_armod_widget