startAssessment method
Future<void>
startAssessment({
- required AssessmentTypes type,
- String? assessmentID,
- Map<
String, dynamic> ? userData, - bool showSummary = false,
- Map<
String, dynamic> ? modifications, - void onHandle()?,
override
Implementation
@override
Future<void> startAssessment({
required AssessmentTypes type,
String? assessmentID,
Map<String, dynamic>? userData,
bool showSummary = false,
Map<String, dynamic>? modifications,
void Function(SMKitStatus)? onHandle,
}) async {
StreamSubscription<Object?>? subscription;
subscription = eventChannel.receiveBroadcastStream().listen((Object? event) {
_onEvent(event, onHandle, () => subscription?.cancel());
});
try {
final modificationsToSend = (modifications != null && modifications.isNotEmpty) ? modifications : null;
final arg = {
'type': type.rawValue,
'id': assessmentID,
if (userData != null) 'userData': userData,
'showSummary': showSummary,
if (modificationsToSend != null) 'modifications': modificationsToSend,
};
await methodChannel.invokeMethod('startAssessment', arg);
// Do not cancel here: iOS returns immediately; keep subscription until terminal event
} on PlatformException catch (e) {
subscription.cancel();
debugPrint('PlatformException: ${e.code} ${e.message}');
}
}