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);
}
}