[giveResult] added shouldFinish param and integrated

This commit is contained in:
Harsh Bhikadia 2021-04-24 21:29:33 +05:30
parent 27029a82f6
commit 004189b425
2 changed files with 7 additions and 3 deletions

View file

@ -57,7 +57,7 @@ class ReceiveIntentPlugin : FlutterPlugin, MethodCallHandler, EventChannel.Strea
eventSink?.success(latestIntentMap) eventSink?.success(latestIntentMap)
} }
private fun giveResult(result: Result, resultCode: Int?, data: String?) { private fun giveResult(result: Result, resultCode: Int?, data: String?, shouldFinish: Bool?) {
if (resultCode != null) { if (resultCode != null) {
if (data == null) { if (data == null) {
activity?.setResult(resultCode) activity?.setResult(resultCode)
@ -65,6 +65,9 @@ class ReceiveIntentPlugin : FlutterPlugin, MethodCallHandler, EventChannel.Strea
val json = JSONObject(data) val json = JSONObject(data)
activity?.setResult(resultCode, jsonToIntent(json)) activity?.setResult(resultCode, jsonToIntent(json))
} }
if(shouldFinish ?: false){
activity?.finish()
}
result.success(null) result.success(null)
} }
result.error("InvalidArg", "resultCode can not be null", null) result.error("InvalidArg", "resultCode can not be null", null)
@ -87,7 +90,7 @@ class ReceiveIntentPlugin : FlutterPlugin, MethodCallHandler, EventChannel.Strea
result.success(initialIntentMap) result.success(initialIntentMap)
} }
"giveResult" -> { "giveResult" -> {
giveResult(result, call.argument("resultCode"), call.argument("data")) giveResult(result, call.argument("resultCode"), call.argument("data"), call.argument("shouldFinish"))
} }
else -> { else -> {
result.notImplemented() result.notImplemented()

View file

@ -69,10 +69,11 @@ class ReceiveIntent {
.receiveBroadcastStream() .receiveBroadcastStream()
.map<ReceivedIntent?>((event) => ReceivedIntent.fromMap(event as Map?)); .map<ReceivedIntent?>((event) => ReceivedIntent.fromMap(event as Map?));
static Future<void> giveResult(int resultCode, {Map? data}) async { static Future<void> giveResult(int resultCode, {Map? data, bool shouldFinish: false}) async {
await _methodChannel.invokeMethod('giveResult', <String, dynamic>{ await _methodChannel.invokeMethod('giveResult', <String, dynamic>{
"resultCode": resultCode, "resultCode": resultCode,
"data": json.encode(data), "data": json.encode(data),
"shouldFinish": shouldFinish,
}); });
} }
} }