banuba_sdk 1.9.11 banuba_sdk: ^1.9.11 copied to clipboard
Banuba SDK for Flutter - full-scale augmented reality SDK | Flutter face filters | Virtual try-on | Background replacement | Face tracking
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:banuba_sdk/banuba_sdk.dart';
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 {
final _banubaSdkManager = BanubaSdkManager();
final _epWidget = EffectPlayerWidget(key: null);
@override
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
await _banubaSdkManager.initialize([],
'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',
SeverityLevel.info);
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {});
await _banubaSdkManager.openCamera();
await _banubaSdkManager.attachWidget(_epWidget.banubaId);
await _banubaSdkManager.startPlayer();
await _banubaSdkManager.loadEffect("effects/TrollGrandma", false);
}
@override
Widget build(BuildContext context) {
return MaterialApp(home: _epWidget);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_banubaSdkManager.startPlayer();
} else {
_banubaSdkManager.stopPlayer();
}
}
}