Skip to main content

Integration Guide on Flutter

This guide helps to complete full Video Editor SDK integration.

Import it

Use in your Dart code

import 'package:ve_sdk_flutter/ve_sdk_flutter.dart';

Configuration

Android

Update gradle files

[!IMPORTANT] if your project supports Flutter Gradle plugin.

Update your project gradle with the following code:

buildscript {
ext.kotlin_version = '1.8.22'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:8.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

IOS

Add specs to Podfile

Add the following specs at the top of your Podfile

platform :ios, '15.0'

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Banuba/specs.git'
source 'https://github.com/sdk-banuba/banuba-sdk-podspecs.git'

Add permissions

Specify the required iOS permissions used by the SDK in your Info.plist

<key>NSAppleMusicUsageDescription</key>
<string>This app requires access to the media library</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app requires access to the microphone.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>

Add AR effects

Banuba Face AR SDK product is used on camera and editor screens for applying various AR effects while making video content.

  1. Android - add effects to the project by the path android/app/src/main/assets/bnb-resources/effects.
  2. iOS - add the effect to resource folder bundleEffects. Make sure to select the "Copy items if needed" and "Create folder references" checkboxes while adding effects to the bundleEffects folder.

Android

Preview files are in drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi folders.
Keep in mind that drawable-xxxhdpi contains files with the highest resolution. Additionally, you can copy paste just one set of previews if it meets your requirements.

iOS

Copy the ColorEffectsPreview folder from example's asset catalog to your app's asset catalog.

Disable Face AR SDK

Android

Set the ENABLE_FACE_AR flag to the gradle.properties:

org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
+ ENABLE_FACE_AR=false

IOS

Set the environment ENABLE_FACE_AR flag the the PodFile:

...
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

+ ENV['ENABLE_FACE_AR'] = 'false'

project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
...

Enable Android Photo Picker

Set the ENABLE_GALLERY flag to the gradle.properties:

org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
+ ENABLE_GALLERY=false

Limit processor architectures on Android

Banuba Video Editor on Android supports the following processor architectures - arm64-v8a, armeabi-v7a, x86-64. Please keep in mind that each architecture adds extra MBs to your app. To reduce the app size you can filter architectures in your app/build.gradle file.

...
defaultConfig {
...
// Use only ARM processors
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}

Customizations

Usage

Create instance of the FeaturesConfig to apply various Video Editor configurations.

Pass the FeaturesConfig instance to any Video Editor start method. For example:

Future<void> _startVideoEditorInCameraMode() async {
final config = FeaturesConfigBuilder()
.setAudioBrowser(AudioBrowser.fromSource(AudioBrowserSource.local))
// ...
.build();
try {
dynamic exportResult =
await _veSdkFlutterPlugin.openCameraScreen(_licenseToken, config);
_handleExportResult(exportResult);
} on PlatformException catch (e) {
_handlePlatformException(e);
}
}