plumter_flutter_sdk_v1 0.1.0-beta.3
plumter_flutter_sdk_v1: ^0.1.0-beta.3 copied to clipboard
Plumter Flutter SDK — a drop-in package for generating dynamic payment beneficiary fields for cross-border payment tickets, with server-driven theming.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:plumter_flutter_sdk_v1/plumter_flutter_sdk_v1.dart';
void main() => runApp(const ExampleApp());
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Plumter Flutter SDK Example',
theme: ThemeData(useMaterial3: true),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
// Replace this with a Plumter-issued JWT. The SDK decodes the token to
// discover the API base URL — with a placeholder value, launch() reports a
// PFSdkInvalidServerUrlError via onFailure.
static const String _authToken = 'PASTE_YOUR_PLUMTER_AUTH_TOKEN_HERE';
void _launchSdk(BuildContext context) {
final messenger = ScaffoldMessenger.of(context);
PFSdk.launch(
context: context,
authToken: _authToken,
themeMode: ThemeMode.light,
onSuccess: (PFSdkResult result) {
messenger.showSnackBar(
SnackBar(content: Text('Success — Beneficiary ${result.beneficiary}')),
);
},
onFailure: (PFSdkError error) {
messenger.showSnackBar(
SnackBar(content: Text('Failed — ${error.code}: ${error.message}')),
);
},
onCancel: () {
messenger.showSnackBar(
const SnackBar(content: Text('Cancelled')),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Plumter Flutter SDK')),
body: Center(
child: FilledButton(
onPressed: () => _launchSdk(context),
child: const Text('Launch SDK'),
),
),
);
}
}