banuba_sdk 1.9.1 copy "banuba_sdk: ^1.9.1" to clipboard
banuba_sdk: ^1.9.1 copied to clipboard

Banuba SDK for Flutter - full-scale augmented reality SDK | Flutter face filters | Virtual try-on | Background replacement | Face tracking

example/lib/main.dart

import 'dart:async';
import 'dart:io';

import 'package:banuba_sdk/banuba_sdk.dart';
import 'package:banuba_sdk_example/page_camera.dart';
import 'package:banuba_sdk_example/page_image.dart';
import 'package:banuba_sdk_example/page_touchup.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';

const banubaToken = 'Y7fjfa2QFrYtZ1p89wqYHzRKfEC8pkAjGbiOTzWJ10Kep1vC5xBycnrME6qVAvJwsa9EERzANbgcTzDyCUu+UJ8YwbOZIPKfGNEbaK2JgnNGyOk3fX6lsijlw0+ElLvnXhawatxcuYQs1VvLUW8DWB3ql0JBSuZlgc72xMPCqUEmNS05UXnoABrJKAaFRONxWvkudqRggICCL8nj1XvPd1MrMCKtTu74TkqGgmTdvV3rDe57gJvoLscettQJqGfkjjQ5uORazf6RgfFM693luasmvUkLwEBTzPzyrtdHrgQAeD6vv6l/f7FcqXHm1rQuSBPOTbz67npexaXSNH3fafxZisnTlx1VcXpdi2Xykys2cVsUhj/gxQ1IjuZ+VxUlEIJFqAfoxDur+t/CIFZDceR++PP+Sc+nDBd3rp9RfN4ugFZPwEbJ54ydPU9lEsmeYAufreJ0Vvv6OYQHh1h3gpTGoVJl48mwgylEX4NU4FW3gnxWaVfmWhsEp5x71jJ7IAwJWddY3G6CMIzu+g2nR9LzXSRbLVNBWdRHBSjlKEfrTIaFmRjjrRnK+Ff/2VZPGqB8ojbYtDnWccftKRhY2n5UGdtnd8ulbGMFHJMqgL32UnNVlIluXddF5iWkJ11cZ3nw87wTS1qUiPsZxnt/utOzlYl0ymBQdqsBmaJA6ME+PEYbaFo3WAdTYWbEJmj1XPXMN4TyrLJHCL4IBOp7KLpmK6mnId0uhSlYILAyMFkhzNb7RtCdJX9KmkpFw0ZjUYNbUbIWjW6TGSjLkMGVeT80luxEtyyGqKS7C4sa2Jdo7cm002eLue2VEGLHhoQVKNu7K+IXOIOLJ0X3eZoOhC6I9QVf+zELJnpTLoADu1ZKViENbdhGgC+H6ekFszM0AkzzOxZbssNKP6PduAB4WAg3mrhKqlb+WEGnBQpezAtNaskYMoktWmsRuvfhPxb4hF5ds86r764ToMPqjxo7QjIo93RFSYWG4eKJ7RJw49Zv1PvL3qFKUEPQ2o3syKMdU1doSieRbgwvejv6C6FrJfgO490L7pYl+URA8tgku4xRjr2XlRs+XMRJR0I8WuzteblY3eyn9A6/hM6eT0Z9AZo6omdOoCid0DNafF06hvpNUWrRsTdp1yof8jdiIRuwF+xlVnNBEvXW8dqSiUztGlMtGtP7mRpAlh+7z+oP0hBft1Vbrj5EvPiwrDJHI5qc+/TOYbEa2iJpwKH1+ZKl4JIfMJ/DrALWg4frB/Ns/aXnQH0PaVY6OBQXDLvt1XRWXPcq9+x7l5Z+FedgCEWaWKBUme6wfv69SAMTQp+HVgEWouR/U/6Iq1I=';

enum EntryPage { camera, image, touchUp }

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  // Avoid creating multiple instances
  final _banubaSdkManager = BanubaSdkManager();

  // Use this flag to switch between Camera and Photo modes
  final _entryPage = EntryPage.camera;

  @override
  void initState() {
    super.initState();
    initSDK();
  }

  // Platform messages are asynchronous, so we initialize it in an async method.
  // Avoid calling this method frequently
  Future<void> initSDK() async {
    debugPrint('Init Banuba SDK');

    await _banubaSdkManager.initialize([], banubaToken, SeverityLevel.info);

    debugPrint('Banuba Sdk initialized successfully!');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Face AR Flutter Sample',
        theme: ThemeData(
          primarySwatch: Colors.indigo,
        ),
        home: _createEntryPage());
  }

  StatefulWidget _createEntryPage() {
    switch (_entryPage) {
      case EntryPage.camera:
        return CameraPage(_banubaSdkManager);

      case EntryPage.image:
        return ImagePage(_banubaSdkManager);

      case EntryPage.touchUp:
        return TouchUpPage(_banubaSdkManager);
    }
  }
}

Future<String> generateFilePath(String prefix, String fileExt) async {
  final directory = await getTemporaryDirectory();
  final filename = '$prefix${DateTime.now().millisecondsSinceEpoch}$fileExt';
  return '${directory.path}${Platform.pathSeparator}$filename';
}

// This is a sample implementation of requesting permissions.
// It is expected that the user grants all permissions. This solution does not handle the case
// when the user denies access or navigating the user to Settings for granting access.
// Please implement better permissions handling in your project.
Future<bool> requestPermissions() async {
  final requiredPermissions = getPlatformPermissions();
  for (var permission in requiredPermissions) {
    var ps = await permission.status;
    if (!ps.isGranted) {
      ps = await permission.request();
      if (!ps.isGranted) {
        return false;
      }
    }
  }
  return true;
}

List<Permission> getPlatformPermissions() {
  if (Platform.isAndroid) {
    // Implement check version flow on your side
    final versionHigher11 = true;
    if (versionHigher11) {
      return [Permission.camera, Permission.microphone, Permission.manageExternalStorage];
    } else {
      return [Permission.camera, Permission.microphone, Permission.storage];
    }
  } else if (Platform.isIOS) {
    return [Permission.camera, Permission.microphone];
  } else {
    throw Exception('Platform is not supported!');
  }
}
14
likes
0
pub points
77%
popularity

Publisher

unverified uploader

Banuba SDK for Flutter - full-scale augmented reality SDK | Flutter face filters | Virtual try-on | Background replacement | Face tracking

Homepage

License

unknown (license)

Dependencies

flutter, pigeon, plugin_platform_interface

More

Packages that depend on banuba_sdk