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.
0.1.0-beta.3 #
Reliability release. Every way out of the SDK now removes exactly one route and invokes exactly one callback, and no failure can leave the module on screen without telling the host why.
Fixed #
- Teardown left the module on screen. An unrecoverable mid-flow failure
(an expired token) invoked
onFailurewithout dismissing the SDK, so the host believed the flow had closed while the customer was still in it. - Teardown could remove the wrong route. The SDK popped the top of a
navigator rather than removing its own route. Host apps that nest navigators —
a tab shell, a
ShellRoute— were left on a blank region instead of the screen they launched from. - The system back gesture dismissed the SDK silently, without invoking any callback. Back is now intercepted above the SDK's inner navigator: mid-flow it steps back a screen, and on the first screen it cancels.
- A crash on exit.
Navigator.pushcompletes its future on the first frame of the pop, so the SDK'sProviderContainerwas disposed while its widgets were still rebuilding, throwing "Tried to read a provider from a ProviderContainer that was already disposed". - A blank screen on launch. When vendor config carried no font family, the theme gate awaited a Google Fonts download that could stall indefinitely, with no error and no callback. Font loading is now bounded and best-effort.
launch()dismissed a host screen on an empty or malformed token, before the SDK had pushed anything of its own.- Nested beneficiary fields were silently dropped. Any schema group without
a
requiredkey produced no inputs at all, so those values were never collected and were submitted blank. - A rejected token mid-flow showed a dead end. Document upload displayed a
toast the customer could not act on, and the startup gate offered a retry that
could only fail again. Both now report
INVALID_TOKENto the host. - Startup errors claimed the connection was down regardless of cause; a server fault now reads as one.
beneficiaryDatawas accepted bylaunch()and never used.
Changed #
- Error reporting uses a private Sentry hub built from the token's
sentryDSN. The globalSentrysingleton is no longer initialised and the host'sFlutterError.onErroris restored when the flow ends, so a host that uses Sentry keeps its own hub, DSN and error handling. themeModeis aThemeModerather than a magic string.- The auth token is decoded once into a typed object exposing
serverUrl,sentryDSN,vendorIdand expiry. - The beneficiary form's state moved out of the widget, and the input fields it renders now have a single owner for their controllers.
Added #
ARCHITECTURE.md, recording the design decisions behind the SDK's route and callback contract, error isolation and resource lifetimes.- A test suite and harness — 448 tests covering the wire contract, every exit path, error classification and beneficiary payload assembly.
0.1.0-beta.2 #
- Relicensed under the MIT License.
- Added an
example/app demonstratingPFSdk.launch(). - Documented the public API (
PFSdk,PFSdkResult,PFSdkError). - Upgraded dependencies to their latest major versions (including
file_picker11,animate_do5,date_picker_plus7).
0.1.0-beta.1 #
Initial public beta of the Plumter Flutter payment SDK.
PFSdk.launch()— single entry point that mounts the payment module over the host app with an isolated Riverpod container.- Add, review, and confirm dynamic beneficiary information for cross-border payment tickets, including routing number / SWIFT validation.
- Document upload (camera, gallery, file manager) with image compression and in-app image/PDF preview.
- Server-driven theming (light/dark).
Beta: APIs may change before the
1.0.0stable release.