From 3206b9a2bd0ff245900ce7206929858ad64c013b Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 19 Feb 2025 08:53:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20Copy=20the=20result=20data?= =?UTF-8?q?=20instead=20of=20referencing=20directly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/src/platform/iris_method_channel_interface.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/src/platform/iris_method_channel_interface.dart b/lib/src/platform/iris_method_channel_interface.dart index 40df4ef..623f7a5 100644 --- a/lib/src/platform/iris_method_channel_interface.dart +++ b/lib/src/platform/iris_method_channel_interface.dart @@ -18,11 +18,13 @@ class BufferParam { } class CallApiResult { - CallApiResult( - {required this.irisReturnCode, required this.data, this.rawData = ''}); + CallApiResult({ + required this.irisReturnCode, + required Map data, + this.rawData = '', + }) : data = Map.from(data); final int irisReturnCode; - final Map data; // TODO(littlegnal): Remove rawData after EP-253 landed. From 2e435950782ec7e22547d48cd8fe34b030444e6a Mon Sep 17 00:00:00 2001 From: Alex Li Date: Wed, 19 Feb 2025 19:20:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Ensure=20`CallApiResul?= =?UTF-8?q?t`=20is=20immutable=20but=20provide=20a=20factory=20constructor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iris_method_channel_interface.dart | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/src/platform/iris_method_channel_interface.dart b/lib/src/platform/iris_method_channel_interface.dart index 623f7a5..2c66a4b 100644 --- a/lib/src/platform/iris_method_channel_interface.dart +++ b/lib/src/platform/iris_method_channel_interface.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; -import 'package:flutter/foundation.dart' show VoidCallback, SynchronousFuture; +import 'package:flutter/foundation.dart' + show VoidCallback, SynchronousFuture, immutable; import 'package:iris_method_channel/src/iris_handles.dart'; import 'package:iris_method_channel/src/platform/iris_event_interface.dart'; import 'package:iris_method_channel/src/scoped_objects.dart'; @@ -17,12 +18,25 @@ class BufferParam { final int length; } +@immutable class CallApiResult { - CallApiResult({ - required this.irisReturnCode, + factory CallApiResult({ required Map data, + required int irisReturnCode, + String rawData = '', + }) { + return CallApiResult._( + data: Map.from(data), + irisReturnCode: irisReturnCode, + rawData: rawData, + ); + } + + const CallApiResult._({ + required this.irisReturnCode, + required this.data, this.rawData = '', - }) : data = Map.from(data); + }); final int irisReturnCode; final Map data;