appboxo_sdk 0.16.1
appboxo_sdk: ^0.16.1 copied to clipboard
A Flutter plugin to integrate the BoxoSDK for iOS and Android.
example/lib/main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:appboxo_sdk/boxo.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Future<void> Function()? subscription;
StreamSubscription<PaymentEvent>? _paymentSubscription;
final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();
@override
void dispose() {
subscription?.call();
_paymentSubscription?.cancel();
super.dispose();
}
@override
void initState() {
super.initState();
Boxo.setConfig('602248', theme: 'light',
splashScreenOptions: {
'light_progress_indicator': '#000000',
'light_progress_track': '#FFFFFF',
'light_background': '#C495FF',
'dark_progress_indicator': '#FFFFFF',
'dark_progress_track': '#000000',
'dark_background': '#6A22C9'
});
Boxo.customEvents().listen((CustomEvent event) {
print(event.toJson().toString());
Boxo.sendEvent(event);
});
Boxo.miniapps().listen((result) {
print('miniapps - ${result.miniapps.toString()}');
result.miniapps?.forEach((data) => print(data.name));
print('error - ${result.error}');
});
Boxo.getMiniapps();
subscription = Boxo.lifecycleHooksListener(
onAuth: (appId) {
print(appId);
print('onAuth');
},
onLaunch: (appId) {
print(appId);
print('onLaunch');
},
onResume: (appId) {
print(appId);
print('onResume');
},
onPause: (appId) {
print(appId);
print('onPause');
},
onClose: (appId) {
print(appId);
print('onClose');
},
onError: (appId, error) {
print(appId);
print(error);
print('onError');
},
);
_paymentSubscription = Boxo.paymentEvents().listen((event) {
Boxo.hideMiniapps();
WidgetsBinding.instance.addPostFrameCallback((_) {
final navContext = _navigatorKey.currentContext;
if (navContext == null || !navContext.mounted) return;
showDialog<void>(
context: navContext,
builder: (BuildContext dialogContext) {
return AlertDialog(
title: const Text('Confirm payment'),
content: Text(event.transactionToken),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.pop(dialogContext);
event.status = 'cancelled';
Boxo.sendPaymentEvent(event);
Boxo.openMiniapp(event.appId);
},
child: const Text('Cancel'),
),
TextButton(
onPressed: () {
Navigator.pop(dialogContext);
event.status = 'success';
Boxo.sendPaymentEvent(event);
Boxo.openMiniapp(event.appId);
},
child: const Text('OK'),
),
],
);
},
);
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: _navigatorKey,
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('Appboxo SDK Test'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Boxo.openMiniapp("app16973",
data: {'title': 'Title'},
extraUrlParams: {'key': 'value'},
colors: {
'primary_color': '#000000',
'secondary_color': '#0000FF',
'tertiary_color': '#00FF00'
},
enableSplash: false,
pageAnimation: 'RIGHT_TO_LEFT');
},
child: const Text(
'Open miniapp',
style: const TextStyle(
color: Colors.white,
fontSize: 16,
),
),
),
),
),
);
}
}