initialize method

  1. @override
Future<Map<String, dynamic>> initialize([
  1. QRScanConfig? config
])
override

Initialize the QR scanner

Implementation

@override
Future<Map<String, dynamic>> initialize([QRScanConfig? config]) async {
  try {
    final configuration = config ?? const QRScanConfig();

    if (kDebugMode) {
      debugPrint('QuickQR Scanner: Initializing with config - $configuration');
    }

    // Validate configuration
    final warnings = configuration.validate();
    if (warnings.isNotEmpty && kDebugMode) {
      debugPrint('QuickQR Scanner: Configuration warnings - $warnings');
    }

    final arguments = configuration.toMap();
    final result = await methodChannel.invokeMethod<Map<Object?, Object?>>('initialize', arguments);
    final initResult = Map<String, dynamic>.from(result ?? {});

    if (kDebugMode) {
      debugPrint('QuickQR Scanner: Initialization result - $initResult');
    }

    return initResult;
  } on PlatformException catch (e) {
    throw _handlePlatformException(e, 'initialize');
  } catch (e) {
    if (e is ScannerException) rethrow;
    throw ScannerException(
      ScannerErrorCode.initializationFailed,
      'Failed to initialize scanner: $e',
    );
  }
}