startCustomizedAssessment method

  1. @override
Future<void> startCustomizedAssessment({
  1. required SMKitWorkout assessment,
  2. Map<String, dynamic>? userData,
  3. bool forceShowUserDataScreen = false,
  4. bool showSummary = false,
  5. Map<String, dynamic>? modifications,
  6. void onHandle(
    1. SMKitStatus
    )?,
})
override

Implementation

@override
Future<void> startCustomizedAssessment({
  required SMKitWorkout assessment,
  Map<String, dynamic>? userData,
  bool forceShowUserDataScreen = false,
  bool showSummary = false,
  Map<String, dynamic>? modifications,
  void Function(SMKitStatus)? onHandle,
}) async {
  final modificationsToSend =
      (modifications != null && modifications.isNotEmpty)
      ? modifications
      : null;
  final argument = {
    'smWorkout': jsonEncode(assessment.toJson()),
    if (userData != null) 'userData': userData,
    'forceShowUserDataScreen': forceShowUserDataScreen,
    'showSummary': showSummary,
    if (modificationsToSend != null) 'modifications': modificationsToSend,
  };
  StreamSubscription<Object?>? subscription;
  subscription = eventChannel.receiveBroadcastStream().listen((
    Object? event,
  ) {
    _onEvent(event, onHandle, () => subscription?.cancel());
  });
  try {
    await methodChannel.invokeMethod<String>(
      'startCustomizedAssessment',
      argument,
    );
    // Do not cancel here: iOS returns immediately; keep subscription until terminal event
  } on PlatformException catch (e) {
    subscription.cancel();
    debugPrint('PlatformException: ${e.code} ${e.message}');
  }
}