initialize method

  1. @override
Future<void> initialize(
  1. ULinkConfig config
)
override

Implementation

@override
Future<void> initialize(ULinkConfig config) async {
  // Set up event channel listeners BEFORE calling native initialize
  // so the event sinks are active when the native SDK emits logs during init
  _dynamicLinkSubscription =
      dynamicLinkEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event != null) {
        final linkData = ULinkResolvedData.fromJson(
          Map<String, dynamic>.from(event),
        );
        _dynamicLinkController.add(linkData);
      }
    },
    onError: (error) {
      debugPrint('Dynamic link event channel error: $error');
    },
  );

  _unifiedLinkSubscription =
      unifiedLinkEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event != null) {
        final linkData = ULinkResolvedData.fromJson(
          Map<String, dynamic>.from(event),
        );
        _unifiedLinkController.add(linkData);
      }
    },
    onError: (error) {
      debugPrint('Unified link event channel error: $error');
    },
  );

  _logSubscription = logEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event != null) {
        final logEntry = ULinkLogEntry.fromMap(
          Map<dynamic, dynamic>.from(event),
        );
        debugPrint('[ULink SDK] ${logEntry.level.toUpperCase()}: ${logEntry.message}');
        _logController.add(logEntry);
      }
    },
    onError: (error) {
      debugPrint('Log event channel error: $error');
    },
  );

  _reinstallSubscription =
      reinstallEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event != null) {
        final installationInfo = ULinkInstallationInfo.fromJson(
          Map<String, dynamic>.from(event),
        );
        _reinstallController.add(installationInfo);
      }
    },
    onError: (error) {
      debugPrint('Reinstall event channel error: $error');
    },
  );

  // Now call native initialize - event sinks are already active
  await methodChannel.invokeMethod('initialize', {'config': config.toMap()});
}