diff --git a/android/src/main/kotlin/atomic/financial/atomic_transact_flutter/AtomicTransactFlutterPlugin.kt b/android/src/main/kotlin/atomic/financial/atomic_transact_flutter/AtomicTransactFlutterPlugin.kt index 16fa68a..1458143 100644 --- a/android/src/main/kotlin/atomic/financial/atomic_transact_flutter/AtomicTransactFlutterPlugin.kt +++ b/android/src/main/kotlin/atomic/financial/atomic_transact_flutter/AtomicTransactFlutterPlugin.kt @@ -123,6 +123,10 @@ class AtomicTransactFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAwa }) Transact.presentAction(activity, config) + } else if (call.method == "dismissTransact") { + Transact.close(activity) + } else if (call.method == "hideTransact") { + Transact.hideTransact(activity) } else { result.notImplemented() } diff --git a/example/lib/main.dart b/example/lib/main.dart index 5742a12..8226925 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -116,6 +116,24 @@ class _MyAppState extends State { onPressed: _onActionButtonPressed, child: const Text("Launch Action"), ), + ElevatedButton( + onPressed: () { + _onButtonPressed(); + Future.delayed(Duration(seconds: 10), () { + Atomic.close(); + }); + }, + child: const Text("Launch And Close"), + ), + ElevatedButton( + onPressed: () { + _onButtonPressed(); + Future.delayed(Duration(seconds: 10), () { + Atomic.hide(); + }); + }, + child: const Text("Launch And Hide"), + ), ], ), ), diff --git a/ios/Classes/SwiftAtomicTransactFlutterPlugin.swift b/ios/Classes/SwiftAtomicTransactFlutterPlugin.swift index 675bb5c..9d01f3f 100644 --- a/ios/Classes/SwiftAtomicTransactFlutterPlugin.swift +++ b/ios/Classes/SwiftAtomicTransactFlutterPlugin.swift @@ -74,7 +74,12 @@ public class SwiftAtomicTransactFlutterPlugin: NSObject, FlutterPlugin { } else { result(FlutterError(code: "PlatformError", message: "No keyWindow found", details: nil)) } - break; + break; + case "dismissTransact": + Atomic.dismissTransact() + case "hideTransact": + Atomic.hideTransact() + default: result(FlutterMethodNotImplemented) } diff --git a/lib/platform_interface/atomic_method_channel.dart b/lib/platform_interface/atomic_method_channel.dart index 55f4ef6..e40d01b 100644 --- a/lib/platform_interface/atomic_method_channel.dart +++ b/lib/platform_interface/atomic_method_channel.dart @@ -51,6 +51,16 @@ class AtomicMethodChannel extends AtomicPlatformInterface { }); } + @override + Future dismissTransact() async { + await _channel.invokeMethod('dismissTransact'); + } + + @override + Future hideTransact() async { + await _channel.invokeMethod('hideTransact'); + } + /// Handles receiving messages on the [MethodChannel] Future _onMethodCall(MethodCall call) async { switch (call.method) { diff --git a/lib/platform_interface/atomic_platform_interface.dart b/lib/platform_interface/atomic_platform_interface.dart index 9543b3e..269244d 100644 --- a/lib/platform_interface/atomic_platform_interface.dart +++ b/lib/platform_interface/atomic_platform_interface.dart @@ -54,4 +54,12 @@ abstract class AtomicPlatformInterface extends PlatformInterface { }) async { throw UnimplementedError('presentAction() has not been implemented.'); } + + Future dismissTransact() async { + throw UnimplementedError('dismissTransact() has not been implemented.'); + } + + Future hideTransact() async { + throw UnimplementedError('hideTransact() has not been implemented.'); + } } diff --git a/lib/src/atomic.dart b/lib/src/atomic.dart index feb707b..fa35f73 100644 --- a/lib/src/atomic.dart +++ b/lib/src/atomic.dart @@ -78,6 +78,19 @@ class Atomic { _platform.onCompletion = onCompletion; await _platform.presentAction( - id: id, environment: environment, theme: theme, presentationStyleIOS: presentationStyleIOS); + id: id, + environment: environment, + theme: theme, + presentationStyleIOS: presentationStyleIOS); + } + + static Future close() async { + _isLoading = false; + await _platform.dismissTransact(); + } + + static Future hide() async { + _isLoading = false; + await _platform.hideTransact(); } }