bemall_sdk 1.1.8
bemall_sdk: ^1.1.8 copied to clipboard
Flutter SDK for BeMall Promotion and Loyalty Club services.
example/lib/main.dart
import 'dart:async';
import 'package:bemall_sdk/bemall_sdk.dart';
import 'package:flutter/material.dart';
void main() => runApp(const MaterialApp(home: BeMallExample()));
class BeMallExample extends StatefulWidget {
const BeMallExample({super.key});
@override
State<BeMallExample> createState() => _BeMallExampleState();
}
class _BeMallExampleState extends State<BeMallExample> {
String _status = 'Escolha um serviço';
StreamSubscription<BeMallSdkEvent>? _subscription;
@override
void initState() {
super.initState();
_subscription = BeMallSdk.instance.events.listen((event) {
if (event.type == BeMallSdkEventType.unauthenticated) {
// O SDK não fecha sozinho: o app decide.
BeMallSdk.instance.close();
}
if (!mounted) return;
setState(() => _status = 'Evento: ${event.type.name}');
});
}
@override
void dispose() {
_subscription?.cancel();
super.dispose();
}
Future<void> _open(BeMallService service) async {
try {
await BeMallSdk.instance.initialize(
service == BeMallService.loyaltyClub
? const BeMallSdkConfig.loyaltyClub(
customerId: 'SEU_TENANT',
campaignHash: 'SEU_CAMPAIGN_HASH',
// Sem token, o SDK abre deslogado na home da campanha.
customerAccessToken: 'TOKEN_DO_USUARIO',
)
: const BeMallSdkConfig.promotion(
customerId: 'SEU_TENANT',
campaignHash: 'SEU_CAMPAIGN_HASH',
// Sem token, o SDK abre deslogado (Promotion emite `unauthenticated`).
customerAccessToken: 'TOKEN_DO_USUARIO',
),
utm: const BeMallUtm(custom: {'canal': 'exemplo'}),
mktOptIn: 'ask',
// Barra superior pronta: título, cores e seta de voltar desenhados pelo SDK.
navBar: const BeMallNavBar(
title: 'BeMall',
color: 0xFF0A3D91,
textColor: 0xFFFFFFFF,
),
);
} on BeMallSdkException catch (e) {
if (mounted) setState(() => _status = '${e.code}: ${e.message}');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('BeMall SDK')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(_status),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () => _open(BeMallService.promotion),
child: const Text('Abrir Promotion'),
),
ElevatedButton(
onPressed: () => _open(BeMallService.loyaltyClub),
child: const Text('Abrir Loyalty Club'),
),
],
),
),
);
}
}